【发布时间】:2017-04-23 15:43:16
【问题描述】:
我正在将一个长而丑陋的函数从 JS 移植到 Python,它基本上在给定一些输入参数的情况下计算某种哈希字符串。在移植和调整代码后,进行了一些测试,并且(令人惊讶),我没有得到相同的结果。
我进行了一些调试,结果发现是一个 XOR 操作。所以,长话短说,我已经分离出一个简单的例子,它展示了如何使用相同的值,获得不同的结果。
这是JS代码:
hex_str = "0xA867DF55"
crc = -1349196347
new_crc = (crc >> 8) ^ hex_str
//new_crc == 1472744368
这与 Python 中的代码相同:
hex_str = "0xA867DF55"
crc = -1349196347
new_crc = (crc >> 8) ^ int(hex_str, 16)
//new_crc == -2822222928
唯一的区别是 hex_str 在 Python 中被显式转换为整数。
在实际代码中,此计算在 for 循环中运行。 hex_str 和 crc 在每次迭代时更新。在最初的几次迭代中,python 中一切正常,但是当 hex_str 和 crc 得到上面显示的值时,一切都开始混乱了。
【问题讨论】:
标签: javascript python math operators xor