我读取一个二进制文件并获取一个包含字符的数组。当将两个字节转换为整数时,我做256*ord(p1) + ord(p0)
。它对正整数正常工作,但当我得到一个负数时它不起作用。我知道在最重要的字节中有第一个字节,但没有成功。将二进制数据转换为有符号整数
我也知道有个东西叫struct
和阅读后,我结束了与下面的代码
import struct
p1 = chr(231)
p0 = chr(174)
a = struct.unpack('h',p0+p1)
print str(a)
a
变为-6226,如果我换p0
和p1
我得到-20761。
a
应该是-2
由于这些已经是8位数量,屏蔽掉较低的8位不会做任何事情。 – kindall
要屏蔽符号位,您可以使用'&0x7F',否? – 2011-10-18 19:12:18
@ kindall,原始问题谈到负数。负数是符号扩展的,所以高位包含“1”而不是“0”,因此掩盖它们变得必要。我仍然不确定'ord'如何返回一个负数。 –