我正在尝试从具有十六进制值的压缩文件中读取一些负值:
我知道FF应该是标记 - 但是在python中是否有一个方法可以直接读取值或者我必须自己创建方法?
谢谢!
编辑:这适用于Python 2.6。我的程序从二进制数据中读取,我只是以十六进制显示它以使其更简单。程序一次只读取4个字节,并从这4个字节中获取值。只是其中一些值为负数并显示上述数字。我也希望有人可以解释Python如何将二进制数据解释为值,以便我可以编写反向协议。谢谢!
我从十六进制读取并通过此方法转换为值。
def readtoint(read):
keynumber = read[::-1]
hexoffset=''
for letter in keynumber:
temp=hex(ord(letter))[2:]
if len(temp)==1:
temp="0"+temp
hexoffset += temp
value = int(hexoffset, 16)
return value
它抓取4个字节,反转顺序,然后将十六进制值转换为int值。我上面发布的值已经被反转了。
答案 0 :(得分:6)
使用struct module:
import struct
def readtoint(read):
return struct.unpack('<i', read)[0]
示例:
>>> readtoint('\xfe\xff\xff\xff')
-2
答案 1 :(得分:0)
发布文件阅读代码以获得完美答案。但回答你的问题几乎肯定在这里: