在读取bmp文件的时候,在书上看到一个如下的定义:
#define DIB_HEADER_MARKER ((WORD)('M'<<8 | 'B'))
DIB文件头标志应该是‘BM’,用DIB_HEADER_MARKER来判断是否bmp文件~
可是如果按上面定义的,不就应该是'MB'??
运行是正确的,不懂为什么这样写,是因为“位序”问题么?
#define DIB_HEADER_MARKER ((WORD)('M'<<8 | 'B'))
DIB文件头标志应该是‘BM’,用DIB_HEADER_MARKER来判断是否bmp文件~
可是如果按上面定义的,不就应该是'MB'??
运行是正确的,不懂为什么这样写,是因为“位序”问题么?
'M'<<8
0000 0000 0000 0000 0000 0000 0000 0000
------------------- -------------------
这里是M 或了以后这里是'B'那不就是'MB'了么?可要判断的标志应该是'BM'啊~~~~~~迷惑ing....
在文件头你会看到4D42(这是以十六进制表示的),4D是M, 42是B,
其实,'M'的十六进制表示是ox004D,'B'的十六进制表示是ox004D,
'M'<<8 即ox4D00,
'M'<<8 | 'B' 即ox4D42。