1

4バイトの16進数から正の値と負の値の両方を読み取ることができるメソッドを作成したいと思います。私が今持っている方法は、正の値に対してのみ機能します。

def readtoint(read):
    keynumber = read[::-1]
    hexoffset=''
    for letter in keynumber:
        temp=hex(ord(letter))[2:]
        if len(temp)==1:
            temp="0"+temp
        hexoffset += "\\x"+temp
    #value = int(hexoffset, 16)
    return struct.unpack('<i', value)[0]

上記の方法は、負の数で機能させようとしているため、現在は機能しません。基本的に私のプログラムは、ファイルから4バイトを読み取り、順序を逆にして、16進数に変換してから、16進数を整数に変換します。負の値の場合、structモジュールを使用するように言われましたが、正の値では機能しないようです。負の値と正の値の両方を処理できるPythonのメソッドはありますか?

ありがとうございました!

4

1 に答える 1

1

32 ビットの符号なしを符号付きに変換するコードは次のとおりです。

if value >= 1<<31:
    value -= 1<<32
于 2012-06-02T14:24:32.533 に答える