我已经转换了JavaScript代码,该代码在该代码中使用逐位运算符到Python代码,但是当我在JavaScript和Python中执行此操作时存在一个问题
412287 << 10
然后我在两种语言中得到了相同的结果 422181888 。但是当我在两者中都这样做时
424970184 << 10
然后我在JavaScript中的 1377771520 和Python中的 435169468416 两种语言中得到不同的结果
任何人都可以帮我这个吗? 任何帮助将不胜感激。
答案 0 :(得分:4)
如this SO answer中所述,在javascript中,按位运算符和移位运算符以32位整数运行,而第二个示例溢出32位容量,因此python等价物将是:
(424970184 << 10) & 0x7FFFFFFF
(您使用带符号的32位整数掩码获得“modulo”/“masked”值,而不是实际值)
在Python中,整数容量没有限制,因此您可以获得实际值。
答案 1 :(得分:3)
如果你想要java-script等价值,那你可以做的是:
import ctypes
print(ctypes.c_int(424970184 << 10 ^ 0).value)
输出:
1377771520