0

BITMAPFILEHEADER構造について 2 つの質問があります。

まず、その構造体の独自のバージョンを作成すると、割り当てられたメモリは、データ構造のアラインメントのために16 バイトになります。しかし、BITMAPFILEHEADERのそれは14 バイトです。なぜそれが起こるのですか?

次に、ご存知のように、ビットマップ ヘッダーはリトル エンディアンです。したがって、値に適切にアクセスしたい場合は、ビッグエンディアンに変換する必要があります。ただし、この質問を見ると、受け入れられた回答が何もしないことがわかります。どうすればそれが可能になるのか説明していただけますか?

よろしくお願いいたします。

4

1 に答える 1

0

ファイルには任意のタイプのアラインメントを設定でき、ビットマップ ファイルのヘッダーはたまたま 14 バイトです (詳細については、http: //en.wikipedia.org/wiki/BMP_file_formatを参照してください)。すべてが整列されなければならないという規則はありません (例外は、すべてが整列されることを期待する SSE 命令です)。整列されたデータはより高速にアクセスできるため、データを整列することをお勧めしますが、必須ではありません。ファイル形式には、データの整列もありません。

値を読み取りたい場合はビッグエンディアンに変換する必要がありますが、新しいビットマップを作成したいだけの場合は、BITMAPFILEHEADER 構造体で期待されるのと同じ形式でデータを格納する必要があります。これはリトルエンディアンです。 .

于 2013-02-04T10:25:06.947 に答える