2010-03-05 15 views
17

Nie jestem pewien, czy endian jest właściwym słowem, ale ..PNG format pliku endianness?

Parsowałem przez plik PNG i zauważyłem, że wszystkie wartości całkowite są w big endian. Czy to prawda?

Na przykład szerokość i wysokość są przechowywane w pliku PNG jako 32-bitowe liczby całkowite bez znaku. Obraz jest 16x16 iw pliku jego przechowywane jako:

00 00 00 10 

gdy powinno być:

10 00 00 00 

Czy to prawda, czy jest tam coś mi brakuje?

Odpowiedz

18

Tak, zgodnie ze specyfikacją, całkowite musi być w sieciowej kolejności bajtów (big endian):

wszystkich liczb całkowitych, które wymagają więcej niż jeden bajt musi być w sieciowej kolejności bajtów: najbardziej znaczący bajt przychodzi pierwszy , następnie mniej znaczące bajty w malejącej kolejności istotności (MSB LSB dla dwuczynnikowych liczb całkowitych, MSB B2 B1 LSB dla czterobajtowych liczb całkowitych). Najwyższy bit (wartość 128) bajtu jest numerem bitu 7; najmniejszy bit (wartość 1) jest numerem bitu 0. Wartości są bez znaku, chyba że zaznaczono inaczej. Wartości wyraźnie oznaczone jako podpisane są przedstawione w notacji uzupełnienia dwójkowego.

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

8

Liczba całkowita w PNG jest w kolejności bajtów sieciowych (big endian).

Zobacz: the spec.