私はバイナリファイルを持っていますが、ここでは2バイトの値が 'リバース'バイト順(リトルエンディアン?バイナリデータのバイト順を切り替える方法
1D 00 13 00 27 00 3B 00 45 00 31 00 4F
これらの値を作成した元のプログラムは、内部的にショートとしてそれらを保存します。これらの値は、29,19,39,59,69,49,79に対応する必要があります。私はPython 2.6.5を使ってこれらの値を読み込もうとしています(これはおそらく古いシステムで実行されています(2.3や2.4など) 。
私は
val1, val2, val3, val4, val5, val6, val7 = struct.unpack("1h 1h 1h 1h 1h 1h 1h", data)
を使用して試してみたと、当然のことながら、値がすべて間違って出てくる:
7427
4864
9984
15104
17664
12544
20224
を構造体の説明を見た後、私は私ができるようにしようと思いました
val1, ... = struct.unpack("!h !h ...
が、のようなものを使用するには、テスト、私は
を得たときstruct.error: bad char in struct format
これらの値を正しいバイト順序でアンパックするにはどうすればよいですか?私は別々に2バイトの読み込みをしてから、Pythonコードでそれらを再アセンブルしていますか?
ああ、そうだった。書式指定文字列にはいくつかの書式指定子がありますが、文字列全体の先頭ではなく、「h」指定子の前にバイト順charが配置されています。ありがとう! – pfyon