将整数数组向左移动 `n` 位

Shift an integer array to the left by `n` bits

看来 shift/rotate 一个 n 位的数组应该很简单。

但是,我使用的编程语言 (Solidity) 没有任何这样的运算符(即没有移位或旋转运算符)...

我有一个无符号的 256 位整数(Solidity 类型 uint256)。

我想知道我是否可以以某种方式进行移位或旋转操作"manually"?

我的意思是,执行一些系列的乘法 (*)、mod (%) 或类似的操作来给出所需的移位和旋转?我知道这可能非常低效,但我只需要每小时执行一次或两次此操作,因此在我的用例中并不重要。

如果没有 shift 函数,那么您可能需要执行一系列 *2 或稍微好一点的操作:

val*[2^(班次数)]