BMPファイルのパレット

仕様上、BMPファイルを解析してパレットを書き換えなければいけない。
上で「自分の本来の仕事は進めてない」とか言いつつ、不安に思ってちょっとテストコードとか書いちゃったりしたりして。
BMPのローダもちゃんと書くと結構大変(細かいバージョンの違い等)なんだが、パレットで、256色で、そのパレットもRGBQUADで、余計なデータが含まれていない当等過程してパレット取得を書いてみたら………


final int sizeOf_BITMAPFILEHEADER = 14;
final int offsetOf_bfOffBits = 10;
final int sizeOf_BITMAPINFOHEADER = 40;

int offBits = buffer[offsetOf_bfOffBits] + (buffer[offsetOf_bfOffBits + 1] << 8) + (buffer[offsetOf_bfOffBits + 2] << 16) + (buffer[offsetOf_bfOffBits + 3] << 24);

int paletteSizeInByte = (offBits - sizeOf_BITMAPFILEHEADER - sizeOf_BITMAPINFOHEADER);
int paletteCount = paletteSizeInByte / 4;
for (int i = 0; i < paletteCount; ++i)
{
for (int j = 0; j < 4; ++j)
{
int index = sizeOf_BITMAPFILEHEADER + sizeOf_BITMAPINFOHEADER + (i * 4) + j;
System.out.print("" + (((int)buffer[index]) & 0xff) + " ");
}
System.out.println("");
}


なんだ、超短くかけるじゃん。
仮定が多くてよければ簡単なんだなぁ。ビビって損した。