在python中:
crc = -1 ^ int("0x806567CB",16)
print crc
导致: -2154129356。
在javascript中:
<html>
<body onload="test()"></body>
<script>
function test()
{
crc = -1 ^ ("0x806567CB");
document.write(crc);
}
</script>
</html>
导致: 2140837940。
为什么会有差异?
答案 0 :(得分:2)
Python具有任意精度整数,因此数字0x806567CB
只是一个正常的正整数。
Javascript在执行按位运算时会将数字转换为32位整数。 javascript给你的是相同的Python结果,但截断为32位。
要在Python中获得相同的结果:
x = x & 0xFFFFFFFF # Keep only 32 bits
if x >= 0x80000000:
# Consider it a signed value
x = -(0x100000000 - x)