代码之家  ›  专栏  ›  技术社区  ›  Marlon

PNG文件格式endianness?

  •  17
  • Marlon  · 技术社区  · 16 年前

    我不确定Endian是不是正确的词,但是..

    我一直在通过一个png文件进行解析,我注意到所有的整数值都是用big endian表示的。这是真的吗?

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

    00 00 00 10
    

    当它应该是:

    10 00 00 00
    

    这是真的还是我遗漏了什么?

    2 回复  |  直到 9 年前
        1
  •  18
  •   ja.    9 年前

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

    所有需要超过一个字节的整数都应按网络字节顺序排列:最高有效字节先到,最低有效字节按显著性降序排列(两字节整数为msb lsb,四字节整数为msb b2 b1 lsb)。字节的最高位(值128)编号为位7;最低位(值1)编号为位0。除非另有说明,否则值是无符号的。显式标记为有符号的值用two的补码表示。

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

        2
  •  8
  •   Seth    16 年前

    PNG中的整数是按网络字节顺序(big endian)排列的。

    见: the spec

    推荐文章