BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。 其结构定义如下: typedef struct tagBITMAPFILEHEADER
{
WORD  bfType; // 位图文件的类型,必须为BM
DWORD bfSize; // 位图文件的大小,以字节为单位
WORD bfReserved1; // 位图文件保留字,必须为0
WORD  bfReserved2; // 位图文件保留字,必须为0
DWORD bfOffBits; // 位图数据的起始位置,以相对于位图
// 文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;我使用C++的I/O流库读取一个bmp文件,代码大致如下:
    char strBmpFile[_MAX_PATH];
          cout<<"请输入bmp文件路径"<<endl;
cin>>strBmpFile;
     BITMAPFILEHEADER BmpFileHead;
ifstream in(strBmpFile);
    in.read((char*)&BmpFileHead,sizeof(BITMAPFILEHEADER));
   
   现在我想判断这个文件是否是bmp文件。
我到网上搜了一下,一种做法是你可以打开文件,看其开头的两个字节是否是字符串“BM”,如果是就是Windows位图文件。现在我调试这个程序,发现似乎假如是bmp文件,BITMAPFILEHEADER的成员就是WORD  bfType的值就是19778。我很疑惑,怎么19778这个数字怎么和字符串“BM”联系起来的呢?字母B和字母M的ascii码连起来也不是19778啊?