在Python中复制Javascript逐位操作

在Python中复制Javascript逐位操作,javascript,python,bit-manipulation,Javascript,Python,Bit Manipulation,我试图在Python中复制一个简单的按位Javascript操作 [Javascript] > 0xA867Df55 2825379669 > 0xA867Df55 ^ 0 -1469587627 [Python] >>> 0xA867DF55 2825379669L >>> 0xA867DF55 ^ 0 2825379669L 阅读了以下内容: 这里的问题似乎是Javascript中的0xA867Df55(2825379669)大于

我试图在Python中复制一个简单的按位Javascript操作

[Javascript]

> 0xA867Df55
  2825379669
> 0xA867Df55 ^ 0
  -1469587627
[Python]

>>> 0xA867DF55
2825379669L
>>> 0xA867DF55 ^ 0
2825379669L
阅读了以下内容:

这里的问题似乎是Javascript中的0xA867Df55(2825379669)大于最大的带符号32位int(2147483647),这导致了意外的Javascript结果

邮件接着建议:

“如果出于某种原因,您想在Ruby中复制它,您可以使用1fffffff和您的数字,因此您只对最低有效32位进行操作,然后将其或0(这不起任何作用,但会给您相同的结果)。”

但如果我尝试这样做:

>>> (0xA867DF55 & 0x1FFFFFFF) ^ 0
141025109L
我只需要在Python中复制Javascript行为。有人能建议一个合适的按位操作吗


谢谢。

从uint32转换到int32怎么样

import struct
print struct.unpack('i', struct.pack('I', 0xA867Df55))[0]
输出

-1469587627
-1469587627
或者正如@Ashwini所说:

import ctypes
print ctypes.c_int(0xA867DF55 ^ 0).value
输出

-1469587627
-1469587627

导入ctypes;ctypes.c_int(0xA867DF55^0).value
Related:Great,thx;我将选择第一个选项,因为ctypes不包含在App Engine中您不需要任何模块,
if(n&(1