1

バイナリデータファイルを読み込もうとしています。データファイルには、常に -1 である「センティナル」整数が書き込まれています。これを使って、データを書き込んだマシンがビッグエンディアンかリトルエンディアンかを確認できると思ったのですが、実験してみるとそうではないようです。具体的には:

import struct
data=struct.pack('<i',-1)
print (struct.unpack('<i',data))  #(-1,)
print (struct.unpack('>i',data))  #(-1,) ???
4

2 に答える 2

4

-1 の表現は、ビッグ エンディアンとリドル エンディアン (および 2 の補数) で同じです。つまり、(32 ビットを想定)

ffffffff # big endian
ffffffff # little endian

0x01020304または、追加のチェックを追加する場合は、0x0d0aff00(0d0aは Windows EOL CRLFであり、ff8 ビットの不透明なチャネルを分割し、00null で終わる文字列を分割します)などの値でチェックします。

于 2012-05-18T13:23:13.247 に答える
3

値 -1 は、バイナリ (2 の補数) で 0XFFFFFFFF として表されます。エンディアンに関係なく同じように見えます。

于 2012-05-18T13:23:16.493 に答える