在許多圖像的數(shù)據(jù)存儲中,都是按字節(jié)來存儲的(也有按float型的,如PPM),因?yàn)轭伾闹禐? ~ 255,即一個無符號整型的數(shù)據(jù)GLubyte。但在圖像顏色數(shù)據(jù)之前,還包括圖像的很多信息,如圖像的類型,圖像的每個像素信息是否含有alpha域,圖像的寬,高得,就像MBP一樣,前五十四個字節(jié)是圖像的相關(guān)信息,從第五十四個字節(jié)后才是圖像的顏色數(shù)據(jù),TGA的前十二字節(jié)包含了是否壓縮等,第十三個到第十八個字節(jié)是圖像的寬,高,alpha信息。但現(xiàn)在有個問題,圖像的寬高什么的數(shù)據(jù)在圖像的二進(jìn)制文件中都是按字節(jié)來存放的,但他們又是 int 型或者 short(TGA) 型的,一個字節(jié)的數(shù)據(jù)并表示不完一個圖像的寬高等,而一般用二個或四個,那怎么從每次讀入的單個字節(jié)的信息來組裝成一個int 或者 short信息呢?
這就要先知道這些信息在文件中是怎么存儲的,一般如TGA中,都是按從低位到高位進(jìn)行存儲,0x1234這是一個占有兩個字節(jié)的數(shù)據(jù),即shot型,在圖像文件中的存儲方式是 0x34, 0x12,當(dāng)我們讀出這兩個字節(jié)后,如這兩個字節(jié)在這里表示圖像的寬,則轉(zhuǎn)換成 short 為:int width = 0x12 * 16^2 + 0x34即 18 * 256 + 52,
這個可以來這么理解:
0x12345678 = 0x12000000 + 0x340000 + 0x5600 + 0x78
= 0x12 * 16^6 + 0x34 * 16^4 + 0x56 * 16^2 + 0x78
這也是內(nèi)存為什么是按字節(jié)來讀取,但最后又可以轉(zhuǎn)換成各種類型的基礎(chǔ)。