有时候,我们为了方便并发,会将JavaScript代码改写成Python代码,但是不同的语言会有差异,一些符号并不能拿过来直接用,比如常见的左移运算。
一.差异分别将 2145874521<<2 这行代码在js和Python中执行,会得到不同的结果。
JavaScript运行后的结果:
Python运行后的结果:
可以看到,两者的差别还挺大的。
因此,为了保持结果一致,需要进行改写。
二.算法实现方案一:
def left_shift(based,counter):
val = based << (counter % 32)
maxint = 2147483647
if not -maxint - 1 <= val <= maxint:
val = (val + (maxint + 1)) % (2 * (maxint + 1)) - maxint - 1
return val
以上代码由noob和丘献平樂提供,在此感谢。
方案二:
import ctypes
def left_shift(x, y):
x,y = ctypes.c_int32(x).value,y % 32
return ctypes.c_int32(x << y).value
以上代码由 3301 提供,在此感谢。



