从python中的文件中读取负值

use*_*764 1 python numbers

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

  • 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
Run Code Online (Sandbox Code Playgroud)

它抓取4个字节,反转顺序,然后将十六进制值转换为int值.我上面发布的值已经被反转了.

Mar*_*ans 6

使用struct模块:

import struct

def readtoint(read):
    return struct.unpack('<i', read)[0]
Run Code Online (Sandbox Code Playgroud)

例:

>>> readtoint('\xfe\xff\xff\xff')
-2
Run Code Online (Sandbox Code Playgroud)