在Python中复制Javascript逐位操作
我试图在Python中复制一个简单的按位Javascript操作 [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)大于
> 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