我正在尝试在 Python 中复制一个简单的按位 Javascript 操作。
[Javascript]
> 0xA867Df55
2825379669
> 0xA867Df55 ^ 0
-1469587627
[Python]
>>> 0xA867DF55
2825379669L
>>> 0xA867DF55 ^ 0
2825379669L
阅读以下内容:
听起来这里的问题是 Javascript 中的 0xA867Df55 (2825379669) 大于最大的有符号 32 位 int (2147483647),这导致了意外的 Javascript 结果。
然后邮件继续建议:
“如果出于某种原因你想在 Ruby 中重现它,你可以将你的数字与 1FFFFFFFF 相加,这样你就只在最低有效的 32 位上进行操作,然后将它与 0 相或(除了会给你相同的结果之外什么都不做) 。”
但如果我试试这个:
>>> (0xA867DF55 & 0x1FFFFFFF) ^ 0
141025109L
我只需要在 Python 中复制 Javascript 行为。任何人都可以建议适当的按位运算吗?
谢谢。