1

我正在尝试从具有十六进制值的压缩文件中读取一些负值:

  • FFFFFFFF,应为 -1,但显示为 4294967295
  • FFFFFFFE,应为 -2,但显示为 4294967294

我知道 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 值。我在上面发布的值已经反转了。

4

2 回答 2

6

使用结构模块:

import struct

def readtoint(read):
    return struct.unpack('<i', read)[0]

例子:

>>> readtoint('\xfe\xff\xff\xff')
-2
于 2012-05-31T12:28:02.433 回答
0

发布您的文件阅读代码以获得完美的答案。但你的问题的答案几乎肯定在这里:

在 Python 中从二进制文件中读取整数

于 2012-05-31T12:11:35.733 回答