字符串转WORD的问题

crazyhardy 2008-09-11 05:13:14
字符串"BM"转成WORD为什么会是这样的:
WORD mbVar =((WORD) ('M' << 8) | 'B')

具体问题来源:
CFile& file; //file Open的是一个.bmp文件, 因此bmp文件的文件头应该是"BM"
file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader);
//判断是否为bmp文件
if (bmfHeader.bfType != mbVar )
{ }
...全文
113 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2008-09-11
  • 打赏
  • 举报
回复
MB 是两个字符,每个char是8位,
故把第一个字符M左移8就是 M0
然后 +B 就得到了 MB

(把MB都转化为8位编码2进制手算一下就明了了)
e_sharp 2008-09-11
  • 打赏
  • 举报
回复
UP
donkeydonkey 2008-09-11
  • 打赏
  • 举报
回复
楼上的高手所说还不是非常明白……
星羽 2008-09-11
  • 打赏
  • 举报
回复
WORD 是 2byte char 是1byte

两个1byte 的char放到WORD就这样做啊

把其中一个char放到word的高位,通过 << 8

另一个放到低位
K行天下 2008-09-11
  • 打赏
  • 举报
回复
一个字是2字节,一个字符一个字节
WORD mbVar =((WORD) ('M' < < 8) | 'B')
'M'变为高8为B为低八位
lsldd 2008-09-11
  • 打赏
  • 举报
回复
WORD 是2个字节,'M'+'B'刚好2个字节。
WORD mbVar = ((WORD) ('M' < < 8) | 'B')
按位把'M'填充到mbVar高字节,把'B'填充到mbVar低字节.
本质是一样的,便于判断而已

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧