BMPファイルフォーマット

毎度C勉強会のネタ。今回はファイルの読み書きでもするべと思ってBMPファイルを取り上げてみることにした。テキストファイルを扱うのは初学者向けの本でも解説が多いのでバイナリファイルがいいだろうと思ったのだ。となると生でデータの入っているBMPがよかろうと思って調べてみたのだが、、、
参考にさせてもらったのはこの辺
http://www.kk.iij4u.or.jp/~kondo/bmp/
http://www.umekkii.jp/data/computer/file_format/bitmap.cgi
http://www5d.biglobe.ne.jp/~noocyte/Programming/Windows/BmpFileFormat.html

んでもって、フォーマットを見た感想。BMPってわけわか。たぶん後方互換性に縛られているのだとは思うが、ボトムアップだったりMSBからデータが入っていたり、ヘッダには当てにならない、当てにしてはいけないフィールドがどっさりあるし。

ああ、初めBITMAPFILEHEADERを読むときに構造体に一気に流し込んだらオフセットやファイルサイズが全く入っていなくて途方に暮れた。4バイト境界をまたいでいやがる。なんだかな、である。