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