この正確な動作に答える質問が見つかりませんでした。どういうわけか、何が起こっているのか理解できません:
Windows ビットマップ ファイル (bmp) の内容を配列に読み取り、後でこの配列を使用して必要な情報を抽出します。
char biHeader[40];
// ...
source.read(biHeader,40);
// ...
int biHeight = biHeader[8] | (biHeader[9] << 8) | (biHeader[10] << 16) | (biHeader[11] << 24);
この後、どちらが完全に間違っているかがbiHeight
示されます。そこで、ファイルの 16 進ダンプを調べました。読み取った内容は次のとおりです。-112
400
90 01 00 00
バイト順をビッグ エンディアンに変更すると、予想どおり、0x190
どちらが400
10 進数で表示されます。
上記のコードを次のように変更すると:
unsigned char biHeader[40];
// ...
source.read((char*)biHeader,40);
// ...
int biHeight = ... (same as before)
...次に、期待値を取得します。ここで何が起こっているのですか?
And: このデータをどのように読みますか?