2

我需要移植一些涉及Math.random()*2147483648)^(new Date).getTime(). 虽然看起来对于较小的数字,python 函数和 JS 函数在功能上是等价的,但是对于像这样的大数字,值最终会完全不同。

Python:

>>> 2147483647 ^ 1257628307380
1257075044427

Javascript:

> 2147483647 ^ 1257628307380
-1350373301

如何从 python 获取 Javascript 值?

4

2 回答 2

7

Python 具有无限精度整数,而 Javascript 使用 32 位整数。您可以手动应用 32 位限制以获得所需的结果:

def xor32bit(a, b):
    m = (a ^ b) % (2**32)
    if m > (2**16):
        m -= 2**32
    return m
于 2009-11-07T21:41:17.607 回答
4

最简单的方法是使用 ctypes 来获得与 Javascript 相同的溢出行为:

>>> import ctypes
>>> ctypes.c_int(1257075044427)
c_long(-1350373301)

要获取值:

>>> ctypes.c_int(1257075044427).value
-1350373301
于 2009-11-07T21:44:42.020 回答