16進値を持つ圧縮ファイルからいくつかの負の値を読み取ろうとしています。
- FFFFFFFF。-1である必要がありますが、4294967295と表示されます。
- FFFFFFFE。-2である必要がありますが、4294967294と表示されます。
FFがマーカーになるはずですが、Pythonには値を直接読み取ることができるメソッドがありますか、それとも独自のメソッドを作成する必要がありますか?
ありがとうございました!
編集:これはPython2.6用です。私のプログラムはバイナリデータから読み取り、単純にするために16進数で表示しています。プログラムは、一度に4バイトを読み取るだけで、それらの4バイトから値を取得します。これらの値の一部が負であり、上記の数値を表示しているだけです。また、Pythonがバイナリデータを値に解釈する方法を誰かが説明して、逆プロトコルを記述できるようになることを望んでいます。ありがとうございました!
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 += temp
value = int(hexoffset, 16)
return value
4バイトを取得し、順序を逆にしてから、16進値をint値に変換します。上に投稿した値はすでに反転しています。