在读取bmp文件的时候,在书上看到一个如下的定义:
#define DIB_HEADER_MARKER ((WORD)('M'<<8 | 'B'))
DIB文件头标志应该是‘BM’,用DIB_HEADER_MARKER来判断是否bmp文件~
可是如果按上面定义的,不就应该是'MB'??
运行是正确的,不懂为什么这样写,是因为“位序”问题么?

解决方案 »

  1.   

    'M' 是WORD的一半,右移动到WORD的高八位,再把低八位的‘B“或进去,连成一个WORD
      

  2.   

    我的理解:
    'M'<<8 
    0000 0000 0000 0000  0000 0000 0000 0000
    -------------------  -------------------
    这里是M               或了以后这里是'B'那不就是'MB'了么?可要判断的标志应该是'BM'啊~~~~~~迷惑ing....
      

  3.   

    不要看到“BM”就以为是字符(串)了,这里是设定为一个WORD值。
      

  4.   

    你用UE打开一个bmp图像明白了,
    在文件头你会看到4D42(这是以十六进制表示的),4D是M, 42是B,
    其实,'M'的十六进制表示是ox004D,'B'的十六进制表示是ox004D,
    'M'<<8       即ox4D00,
    'M'<<8 | 'B' 即ox4D42。