2

Pythonを使用してビットマップファイルを作成しています。ビットマップ ヘッダーを作成する私のコードは次のとおりです。

pack('bblll', 66, 77, fileLength, 0, 122)

私の数学が間違っていない限り (そうではありません)、これは 14 バイト長のバイト文字列を作成するはずです。

b = char (1 バイト) l = long (4 バイト)

1 + 1 + 4 + 4 + 4 = 14

しかし、問題は、余分な 2 バイトを受け取ることです。ファイル長が 142 だとすると、次のようになります (16 進数):

42 4D 00 00 8E 00 00 00 00 00 00 00 7A 00 00 00

余分な 2 ビットは、オフセット 0x2 と 0x3 のヌルです。彼らはどこから来たのか?そして、どうすればそれらを取り除くことができますか? それは私のイメージを壊しています。

4

1 に答える 1

5

4 バイト (ワード) 境界までパディングして、longs が自然なオフセット (つまり、4 の倍数であるオフセット) で開始するようにし、=プレフィックス (またはその他の可能なバイト順プレフィックス) を使用してこれを防ぎます。

詳細については、このドキュメント ページを参照してください。

于 2012-08-26T23:47:13.980 に答える