我有一个关于如何读取位图头文件的简单问题。在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位)和“跨度”,因为位图行长度可能会大于图像宽度。 –