具体来说,我想拿这个号码:
x = 1452610545672622396
并执行
x ^= (x << 21) // In Python I do x ^= (x << 21) & 0xffffffffffffffff
我想得到: -6403331237455490756
,这是我在Java中获得的
代替:12043412836254060860
,这是我在Python中获得的(这是我不想要的)
编辑:在Java中我做:
long x = 1452610545672622396;
x ^= (x << 21);
答案 0 :(得分:3)
您可以使用ctypes.c_longlong使用64位signed int,例如java,请参阅下面的示例:
virtual
答案 1 :(得分:0)
您可能会导致溢出。 Java long是64位长,而python没有大小限制。尝试使用Long的长包装类。 Long对象也没有限制(技术上一切都有其限制......)。