2010-03-05 16 views
17

Endian'ın doğru kelime olup olmadığından emin değilim ..PNG dosya formatı endianness?

Bir PNG dosyasıyla ayrıştırma yapıyorum ve tüm tamsayı değerlerinin büyük bir endian olduğunu fark ettim. Bu doğru mu? Örneğin, genişlik ve yükseklik PNG dosyasında 32 bit işaretsiz tam sayı olarak saklanır. Benim resim 16x16 ve dosyada olduğu onun olarak saklanır:

00 00 00 10 

olması gerektiği zaman:

10 00 00 00 

Bu doğru mu yoksa orada Eksik bir şey mi?

cevap

18

Evet, şartnamesine göre, tamsayılar ağ bayt sırasını (big endian) olması gerekir: ağ bayt sırasında olacaktır birden fazla bayt gerektirir

Tüm tamsayılar: en önemli bayt önce gelir Daha sonra, anlamlılık azalan sırasına göre daha az anlamlı baytlar (iki bayt tamsayılar için MSB LSB, dört bayt tamsayılar için MSB B2 B1 LSB). Bir baytın en yüksek biti (128 değeri) bit 7 olarak numaralandırılmıştır; En düşük bit (değer 1), bit 0 olarak numaralandırılmıştır. Aksi belirtilmediği sürece değerler imzasızdır. Açık olarak işaretlenmiş olarak işaret edilen değerler, iki tamamlayıcı notasyonda temsil edilir.

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

8

PNG'deki tamsayılar ağ bayt sırasıdır (büyük endian). Not: the spec.