我有一個關於如何讀取位圖頭文件的簡單問題。在C中指定位圖文件中的十六進制值
我有位圖陣列是這樣的:
typedef unsigned char byte;
char bitmap[(188*180)+1024+54]; //The image size is 188*180 + the header file of 54 bytes+ the pallete table´s 1024 bytes
I'm根據BMP頭指定的值,但具有that's比一個字節大的值時,我有一個問題。例如,我的圖像寬度爲128,十六進制爲0x120。不過,我不能簡單地說:
bitmap[19] = 0x120;
因爲that's大於一個字節。根據我閱讀的內容,我有一個雙字來存儲我的圖像高度(即4個字節),因此我可以使用bitmap[20]
,bitmap[21]
和bitmap[22]
來存儲整個數字。
我該如何劃分數字以獲得存儲在頭文件中的相同值?我不確定在打開bmp文件時是否添加或讀取了單個十六進制數字。
查找描述位圖頭的'struct'定義,並注意字節順序。你*可以*將數字分割成字節,但是字節順序仍然是一個問題。 –
在C中,標準字節與'char'相同,所以'typedef'明確無用,令人困惑。如果打算使用8位類型(即八位字節),請注意一個字節不一定有8位。對於固定寬度(和特定編碼)使用'stint.h'類型。還要注意'char'沒有標準符號。 – Olaf
您還需要研究「每像素位數」(您的是8位)和「跨度」,因爲位圖行長度可能會大於圖像寬度。 –