我有两个关于BITMAPFILEHEADER结构的问题。
首先,如果我们制作我们自己版本的该结构,由于数据结构对齐,分配的内存将是16 字节。但是BITMAPFILEHEADER是14 字节。为什么会这样?
其次,正如您已经知道的 Bitmap Header 是 Little-Endianed。因此,当您希望正确访问该值时,您需要将其转换为 Big-Endian。但是,如果您看到这个问题,您会看到接受的答案没有任何作用。你们能解释一下怎么可能吗?
提前谢谢你的帮助。
我有两个关于BITMAPFILEHEADER结构的问题。
首先,如果我们制作我们自己版本的该结构,由于数据结构对齐,分配的内存将是16 字节。但是BITMAPFILEHEADER是14 字节。为什么会这样?
其次,正如您已经知道的 Bitmap Header 是 Little-Endianed。因此,当您希望正确访问该值时,您需要将其转换为 Big-Endian。但是,如果您看到这个问题,您会看到接受的答案没有任何作用。你们能解释一下怎么可能吗?
提前谢谢你的帮助。
文件可以有任何类型的对齐方式,位图文件的标题恰好是 14 个字节(更多信息:http ://en.wikipedia.org/wiki/BMP_file_format )。没有规则说所有内容都必须对齐(例外是 SSE 指令,它希望所有内容都对齐)。对齐的数据可以更快地访问,因此建议您对齐数据,但您不必这样做。文件格式也没有对齐它们的数据。
如果要读取值,则需要将其转换为大端,但如果只想创建新位图,则必须以与 BITMAPFILEHEADER 结构中预期的格式相同的格式存储数据,即小端.