2016-07-20 5 views
1

私は24バイトの境界ファイルをアンパックするためにモジュールのビットストリングを使用しています。私は入力ファイルを制御できません。モジュールのデフォルト解釈は、明らかにビッグエンディアンです。これは、intやfloatのようなデータ型をアンパックするときには簡単に修正できますが、一部のデータは16進値として表現したいと考えています。アンパック16進値を使用すると、不正なバイト順序が表示されます。これのための修正はありますか?例入力:D806所望の出力:06D8ビットストリングで16進数のエンディアンを変更します。

from bitstring import ConstBitStream 
fp = ConstBitStream(filename="testfile.bin") 
firstChunk = fp.read(2*8) 
data=firstChunk.unpack('hex:16') 
print(data) 

答えて

0

あなたはリトルエンディアン整数解釈に書式設定通常のPythonを使用することができます。あなたも一緒に両方を行うことができますunpack

よりもむしろreadはその後:

print('{:0>4X}'.format(fp.read('uintle:16'))) 

をこれは、ストリームから次の16ビットを読み込み、符号なしのリトルエンディアン整数としてそれを解釈し、その後の4つの文字としてそれをフォーマット16進数、右揃え、ゼロで​​埋められます。

関連する問題