在Python中复制Javascript按位操作

前端之家收集整理的这篇文章主要介绍了在Python中复制Javascript按位操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

[使用Javascript]

  1. > 0xA867Df55
  2. 2825379669
  3. > 0xA867Df55 ^ 0
  4. -1469587627

[Python]

  1. >>> 0xA867DF55
  2. 2825379669L
  3. >>> 0xA867DF55 ^ 0
  4. 2825379669L

阅读以下内容

Bitwise OR in ruby vs javascript

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

然后邮件继续建议:

“如果出于某种原因你想在Ruby中重现它,你会用1FFFFFFFF和你的数字进行比较,这样你只能在最低有效32位上运行,然后用0运算它(它什么都不做,但会给你相同的结果) “.

但如果我试试这个:

  1. >>> (0xA867DF55 & 0x1FFFFFFF) ^ 0
  2. 141025109L

我只需要在Python中复制Javascript行为.任何人都可以建议适当的按位操作?

谢谢.

最佳答案
@H_404_44@如何从uint32转换为int32.

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

OUTPUT

  1. -1469587627

或者@Ashwini建议:

  1. import ctypes
  2. print ctypes.c_int(0xA867DF55 ^ 0).value

OUTPUT

  1. -1469587627

猜你在找的JavaScript相关文章