为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中复制Javascript按位运算

在Python中复制Javascript按位运算

汪汪一只猫 2021-03-17 17:14:55
我正在尝试在Python中复制一个简单的按位Javascript操作。[Javascript]> 0xA867Df55  2825379669> 0xA867Df55 ^ 0  -1469587627[Python]>>> 0xA867DF552825379669L>>> 0xA867DF55 ^ 02825379669L阅读以下内容:ruby与javascript中的按位或听起来这里的问题是Javascript中的0xA867Df55(2825379669)大于最大的有符号32位int(2147483647),这会导致意外的Javascript结果。然后邮件继续建议:“如果出于某种原因要在Ruby中重现,则可以将数字与1FFFFFFFF进行“与”运算,以便仅对最低有效32位进行运算,然后将其与0进行“或”运算(这不会产生任何结果,但会得到相同的结果) 。”但是,如果我尝试这样做:>>> (0xA867DF55 & 0x1FFFFFFF) ^ 0141025109L我只需要在Python中复制Javascript行为即可。任何人都可以建议适当的按位运算吗?
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

如何从uint32转换为int32。


import struct

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

输出


-1469587627

或如@Ashwini所建议:


import ctypes

print ctypes.c_int(0xA867DF55 ^ 0).value

输出


-1469587627


查看完整回答
反对 回复 2021-04-01
  • 1 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信