24

我不确定endian是否是正确的词,但是..

我一直在解析一个 PNG 文件,我注意到所有的整数值都是大端的。这是真的?

例如,宽度和高度在 PNG 文件中存储为 32 位无符号整数。我的图像是 16x16,在文件中存储为:

00 00 00 10

什么时候应该:

10 00 00 00

这是真的还是我错过了什么?

4

2 回答 2

25

是的,根据规范,整数必须按网络字节顺序(大端):

所有需要超过一个字节的整数都应按网络字节顺序排列:最高有效字节在前,然后按重要性降序排列次要字节(MSB LSB 用于两字节整数,MSB B2 B1 LSB 用于四字节整数)。字节的最高位(值 128)编号为第 7 位;最低位(值 1)编号为位 0。除非另有说明,否则值是无符号的。明确标注为带符号的值以二进制补码表示法表示。

http://www.w3.org/TR/2003/REC-PNG-20031110/#7Integers-and-byte-order

于 2010-03-05T02:12:23.537 回答
10

PNG 中的整数采用网络字节顺序(大端序)。

请参阅:规范

于 2010-03-05T02:07:57.653 回答