uint16
バイナリデータの配列をPythonでデータに解凍したいと思います。
インターネットにはstruct.unpack
、サイズ4のバイナリ配列を使用した例がたくさんありますが、それを扱った例だけです。
これらの例のほとんどは次のとおりです(B
ファイルからのバイナリ配列です)
U = struct.unpack("HH",B[0:4]);
だから私はサイズ6の配列を開梱しようとしました:
U = struct.unpack("HHH",B[0:6]);
できます。
L
しかし、サイズの配列(L
ペア)を解凍したい場合はどうすればよいですか?私はそれを試しました:
U = struct.unpack("H"*(L/2),B[0:L]);
しかし、それは機能しません、プロンプターは私にエラーを与えます(L=512
例えば):
struct.error: unpack requires a string argument of length 512
バイナリ配列をに解凍したい場合は、この配列の半分のサイズのuint16
文字列が必要なので、このメッセージは奇妙です..."HHH...HHH"
誰かが私に助けを提供してくれたらとてもありがたいです。
私は少し進歩します...実際、私は試しました:
U = struct.unpack("H"*8,B[0:8]);
できます。
U = struct.unpack("H"*10,B[0:10]);
できます。
U = struct.unpack("H"*222,B[0:444]);
それはまだ動作します
U = struct.unpack("H"*223,B[0:446]);
動作しません!446より大きいサイズでは機能しません
それが誰かが私に答えるのを助けることを願っています。
@MarkRansom len(B)をチェックしましたが、実際の長さは444です。Bは:から来ているので、Bはサイズ512の配列であると確信しました。 B = f.read(512)
ここで、Fは8000バイトサイズのファイルです。したがって、read()の問題...この回答に感謝します!しかし、誰かがサイズLのバイナリ配列を解凍するのを手伝ってくれるなら、私は感謝するでしょう