2010-03-05 16 views
17

Non sono sicuro se endian è la parola giusta ma ..Formato file PNG endianness?

Ho analizzato un file PNG e ho notato che tutti i valori interi sono in big endian. È vero?

Ad esempio, la larghezza e l'altezza sono memorizzate nel file PNG come numeri interi senza segno a 32 bit. La mia immagine è 16x16 e nel file memorizzato come la sua:

00 00 00 10 

quando dovrebbe essere:

10 00 00 00 

È vero o c'è qualcosa che mi manca?

risposta

18

Sì, secondo la specifica, interi devono essere in ordine di byte di rete (big endian):

tutti gli interi che richiedono più di un byte sono, in ordine di byte di rete: il byte più significativo viene prima , quindi i byte meno significativi in ​​ordine decrescente di significatività (MSB LSB per interi a due byte, MSB B2 B1 LSB per interi a quattro byte). Il bit più alto (valore 128) di un byte è il bit 7 numerato; il bit più basso (valore 1) è numerato bit 0. I valori sono senza segno se non diversamente specificato. I valori esplicitamente indicati come firmati sono rappresentati nella notazione a complemento a due.

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

8

I numeri interi in PNG sono in ordine di byte di rete (big endian).

Vedere: the spec.