在Python中复制Javascript按位运算

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


[Javascript]


> 0xA867Df55

  2825379669

> 0xA867Df55 ^ 0

  -1469587627

[Python]


>>> 0xA867DF55

2825379669L

>>> 0xA867DF55 ^ 0

2825379669L

阅读以下内容:


ruby与javascript中的按位或


听起来这里的问题是Javascript中的0xA867Df55(2825379669)大于最大的有符号32位int(2147483647),这会导致意外的Javascript结果。


然后邮件继续建议:


“如果出于某种原因要在Ruby中重现,则可以将数字与1FFFFFFFF进行“与”运算,以便仅对最低有效32位进行运算,然后将其与0进行“或”运算(这不会产生任何结果,但会得到相同的结果) 。”


但是,如果我尝试这样做:


>>> (0xA867DF55 & 0x1FFFFFFF) ^ 0

141025109L

我只需要在Python中复制Javascript行为即可。任何人都可以建议适当的按位运算吗?


汪汪一只猫
浏览 195回答 1
1回答

ABOUTYOU

如何从uint32转换为int32。import structprint struct.unpack('i', struct.pack('I', 0xA867Df55))[0]输出-1469587627或如@Ashwini所建议:import ctypesprint ctypes.c_int(0xA867DF55 ^ 0).value输出-1469587627
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python