我不确定endian是否是正确的词,但是..
我一直在解析一个 PNG 文件,我注意到所有的整数值都是大端的。这是真的?
例如,宽度和高度在 PNG 文件中存储为 32 位无符号整数。我的图像是 16x16,在文件中存储为:
00 00 00 10
什么时候应该:
10 00 00 00
这是真的还是我错过了什么?
我不确定endian是否是正确的词,但是..
我一直在解析一个 PNG 文件,我注意到所有的整数值都是大端的。这是真的?
例如,宽度和高度在 PNG 文件中存储为 32 位无符号整数。我的图像是 16x16,在文件中存储为:
00 00 00 10
什么时候应该:
10 00 00 00
这是真的还是我错过了什么?
是的,根据规范,整数必须按网络字节顺序(大端):
所有需要超过一个字节的整数都应按网络字节顺序排列:最高有效字节在前,然后按重要性降序排列次要字节(MSB LSB 用于两字节整数,MSB B2 B1 LSB 用于四字节整数)。字节的最高位(值 128)编号为第 7 位;最低位(值 1)编号为位 0。除非另有说明,否则值是无符号的。明确标注为带符号的值以二进制补码表示法表示。
http://www.w3.org/TR/2003/REC-PNG-20031110/#7Integers-and-byte-order
PNG 中的整数采用网络字节顺序(大端序)。
请参阅:规范。