我不确定endian是否是正确的词,但是...
我一直在解析PNG文件,发现所有的整数值都是大端字节序。这是真的吗?
例如,宽度和高度以32位无符号整数的形式存储在PNG文件中。我的图像是16x16,在文件中它被存储为:
00 00 00 10
应该是:
10 00 00 00
这是真的吗,还是我漏掉了什么?
我不确定endian是否是正确的词,但是...
我一直在解析PNG文件,发现所有的整数值都是大端字节序。这是真的吗?
例如,宽度和高度以32位无符号整数的形式存储在PNG文件中。我的图像是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