在Python中获得与Java相同的转变

时间:2016-08-10 11:49:43

标签: java python bit-shift

具体来说,我想拿这个号码:

x = 1452610545672622396

并执行

x ^= (x << 21) // In Python I do x ^= (x << 21) & 0xffffffffffffffff

我想得到: -6403331237455490756,这是我在Java中获得的

代替:12043412836254060860,这是我在Python中获得的(这是我不想要的

编辑:在Java中我做:

long x = 1452610545672622396;
x ^= (x << 21);

2 个答案:

答案 0 :(得分:3)

您可以使用ctypes.c_longlong使用64位signed int,例如java,请参阅下面的示例:

virtual

答案 1 :(得分:0)

您可能会导致溢出。 Java long是64位长,而python没有大小限制。尝试使用Long的长包装类。 Long对象也没有限制(技术上一切都有其限制......)。