JS和Python中^运算符的区别

ant*_*r15 2 javascript python bit-manipulation xor

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

蟒蛇:

>>> 2147483647 ^ 1257628307380
1257075044427
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

> 2147483647 ^ 1257628307380
-1350373301
Run Code Online (Sandbox Code Playgroud)

如何从python获取Javascript值?

Ned*_*der 7

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

def xor32bit(a, b):
    m = (a ^ b) % (2**32)
    if m > (2**16):
        m -= 2**32
    return m
Run Code Online (Sandbox Code Playgroud)