我有两个 BMP 文件,一个 Windows 屏幕截图和一个使用 GIMP 生成的 linux 文件。我注意到标头中的所有数据都以大端格式存储。
DIB 头的biWidth
,biHeight
和biPlanes
字段都是大端的,“BMP 文件的字节大小”(位图文件头中的第二个字段)是大端的,这与wikipedia相矛盾,它说:“所有的整数值以小端格式存储"
我查看了 GIMP 的源代码,发现了一个将数据从小端转换为大端的函数: https ://git.gnome.org/browse/gimp/tree/plug-ins/file-bmp/bmp-write.c# n81
该FromL
函数用于在位图文件头中写入文件大小(以字节为单位):
https ://git.gnome.org/browse/gimp/tree/plug-ins/file-bmp/bmp-write.c#n431
所以一切都是大端的,问题是为什么?
当人们可以简单地以小端方式读取和写入数据时,为什么要在写入时转换为大端并在读取时从大端转换为小端?
我错过了什么?