我需要移植一些涉及Math.random()*2147483648)^(new Date).getTime()
的JS代码。虽然它看起来像较小的数字,但python函数和JS函数在功能上是等价的,但是像这样的大数字,值最终会完全不同。
的Python:
>>> 2147483647 ^ 1257628307380
1257075044427
使用Javascript:
> 2147483647 ^ 1257628307380
-1350373301
如何从python获取Javascript值?
答案 0 :(得分:7)
Python具有无限精度的整数,而Javascript使用的是32位整数。您可以手动应用32位限制以获得所需的结果:
def xor32bit(a, b):
m = (a ^ b) % (2**32)
if m > (2**16):
m -= 2**32
return m
答案 1 :(得分:4)
最简单的方法是使用ctypes获得与Javascript相同的溢出行为:
>>> import ctypes
>>> ctypes.c_int(1257075044427)
c_long(-1350373301)
获取值:
>>> ctypes.c_int(1257075044427).value
-1350373301