BMPファイルの形式

http://prog.usamimi.info/bmp/format/
上のURLに詳しい。


==ファイルヘッダ==
2bytes : BM(固定ASCII文字列)
4bytes : filesize(byte)
4bytes : 0(2bytes reserved * 2)
4bytes : 36(ファイル先頭から画像データ本体までのオフセット=54bytes=0x36)


==情報ヘッダ==
4bytes : 0x28(情報ヘッダサイズ=40byte=0x28)
4bytes : 画像幅
4bytes : 画像高
2bytes : 1(指定)
2bytes : 0x20(1ピクセルあたり32bit)
24bytes : 0(指定しなくても良い)


以下ファイルデータ。


どうやら、このヘッダのデータは1byteごとに取得するようになってるようだ。そうでないとヘッダのデータが明らかにおかしい。
例えばファイルサイズが
36 00 24 00
を前から読んだら6GB以上のデータと言うことになってしまう。これは、
0x 00 24 00 36
と読めばよさそうだ。


えーと、エンディアンじゃないのかこれ?
エンディアンについて調べてみたら、これぞまさにリトルエンディアン形式のデータ格納じゃないか!


…ビットマップについて調べてみたら、ちゃんと「ヘッダのデータはリトルエンディアンで記録されます」って書いてあるじゃないか…。