まず、アイコンファイルは大体次のような構成になっています。
アイコンヘッダ部→リソースヘッダ部×リソース数→データ部×リソース数このそれぞれを見ていきます。
わかっているとは思いますが、値は16進数、左が1バイト目です。
アイコンヘッダ部
| 値(固定値の場合の値) | バイト数 |
| 予約(00 00) | 2 |
| リソースタイプ(アイコンの場合、01 00) | 2 |
| リソース数 | 2 |
リソースヘッダ部
| 値(固定値の場合の値) | バイト数 |
| 幅 | 1 |
| 高さ | 1 |
| 色数(02・10・00のどれか) | 1 |
| 予約(通常は00) | 1 |
| プレーン数(00 00または01 00) | 2 |
| ビット数(01 00・04 00・08 00・18 00・20 00のどれか) | 2 |
| サイズ | 4 |
| 対応するデータ部の始まる位置 | 4 |
で、ややこしいのが、色数とビット数の関係で、次のようになっています。
| 色数 | ビット数 | 形式 |
| 00 | 00 00 | 256色 |
| 00 | 08 00 | 256色 |
| 00 | 18 00 | True Color |
| 00 | 20 00 | True Color + Alpha Channel |
| 02 | 00 00 | モノクロ |
| 02 | 01 00 | モノクロ |
| 10 | 00 00 | 16色 |
| 10 | 04 00 | 16色 |
データ部
これが難しいんですよ。色数によって記録方法が変わるし、マスクとかややこしいし、用途不明の部分がまだまだあるし・・・・
わかり次第報告します。