2010-03-05 10 views
17

No estoy seguro si endian es la palabra correcta pero ...PNG formato de archivo endianness?

He estado analizando a través de un archivo PNG y me he dado cuenta de que todos los valores enteros están en big endian. ¿Es esto cierto?

Por ejemplo, el ancho y el alto se almacenan en el archivo PNG como enteros sin signo de 32 bits. Mi imagen es 16x16 y en el archivo de su almacena como:

00 00 00 10 

cuando debería ser:

10 00 00 00 

es esto cierto o hay algo que me falta?

Respuesta

18

Sí, de acuerdo con la especificación, números enteros deben estar en la red de orden de bytes (big endian):

Todos los enteros que requieren más de un byte estará en orden de bytes de red: el byte más significativo es lo primero , luego los bytes menos significativos en orden descendente de importancia (MSB LSB para enteros de dos bytes, MSB B2 B1 LSB para enteros de cuatro bytes). El bit más alto (valor 128) de un byte se numera con el bit 7; el bit más bajo (valor 1) está numerado con el bit 0. Los valores no están firmados a menos que se indique lo contrario. Los valores señalados explícitamente como firmados se representan en notación complementaria de dos.

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

8

Los enteros en PNG están en orden de bytes de red (big endian).

Ver: the spec.