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