我有两个BMP文件,一个Windows屏幕截图和一个使用GIMP生成的linux文件。 我注意到标题中的所有数据都以大端格式存储。
DIB header的biWidth
,biHeight
和biPlanes
字段都是big endian,也是“BMP文件的大小(以字节为单位)”(第二个字段)来自Bitmap File Header)是一个大端,与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
所以一切都在大端,问题是为什么?
为什么人们想要在写入时转换为大端,并在读取时从大端转换为小端,何时可以简单地以小端读取和写入数据?
我错过了什么?