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