c语言实现bmp读写(linux上使用),一个奇怪的错误!欢迎诸位高手指教
我现在需要写一个程序,能够在linux上读写bmp文件,理论上十分简单,但是碰到如下错误,不知道因为什么原因.
我在读bmp文件头的时候,发现读出的数据根本不对
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_4v1h.asp是msdn上关于bmp的文档的文件头0x00 0x0D共有14byte,
文件头的数据结构其定义为
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
由于我需要在linux上运行,不能用WORD和DWORD,我将WORD 换为unsigned short将DWORD 换为unsigned int,如下:
typedef struct {
unsigned short int type;
unsigned int size;
unsigned short int reserved1;
unsigned short int reserved2;
unsigned int offset;
} FILEHEADER;
但是该结构将有4+8+4+4+8共24byte(现在cpu的字长一般均为16位)
但是我 sizeof(FILEHEADER)则只有16byte,请问这些字节是怎么分配的啊?