2010-03-05 8 views
17

Ich bin nicht sicher, ob Endian das richtige Wort ist, aber ..PNG-Dateiformat Endianness?

Ich habe Parsing durch eine PNG-Datei und ich habe festgestellt, dass alle Integer-Werte in Big Endian sind. Ist das wahr?

Zum Beispiel werden die Breite und Höhe in der PNG-Datei als 32bit vorzeichenlose Ganzzahlen gespeichert. Mein Bild ist 16x16 und in der Datei als gespeichert:

00 00 00 10 

wenn es sein sollte:

10 00 00 00 

Ist das wahr oder ist es etwas, was ich vermisst?

Antwort

18

Ja, gemäß der Spezifikation, müssen ganze Zahlen in Netzwerk-Byte-Reihenfolge (Big Endian) sein:

alle ganzen Zahlen, die mehr als ein Byte benötigen in Netzwerk-Byte-Reihenfolge sein soll: das höchstwertige Byte zuerst kommt , dann die weniger signifikanten Bytes in absteigender Reihenfolge der Signifikanz (MSB LSB für Zwei-Byte-Ganzzahlen, MSB B2 B1 LSB für Vier-Byte-Ganzzahlen). Das höchste Bit (Wert 128) eines Bytes ist mit Bit 7 nummeriert; das niedrigste Bit (Wert 1) ist mit Bit 0 nummeriert. Werte sind unsigned, sofern nicht anders angegeben. Werte, die explizit als signiert gekennzeichnet sind, werden in Zweierkomplement-Notation dargestellt.

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

8

Ganzzahlen in PNG sind in der Netzwerk-Byte-Reihenfolge (Big Endian).

Siehe: the spec.