社区
C++ 语言
帖子详情
大家讨论讨论结果:
polytech
2006-01-13 06:07:47
有一个宏定义:#define DIB_HEADER_MARKER ((WORD) ('M' << 8) | 'B')
大家讨论讨论结果: DIB_HEADER_MARKER到底是"MB"还是“BM”,怎么通过编程查看字符串内容?
...全文
133
9
打赏
收藏
大家讨论讨论结果:
有一个宏定义:#define DIB_HEADER_MARKER ((WORD) ('M' << 8) | 'B') 大家讨论讨论结果: DIB_HEADER_MARKER到底是"MB"还是“BM”,怎么通过编程查看字符串内容?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
CMyMfc
2006-01-14
打赏
举报
回复
结果是BM
'M'<<8 // 'M'为00000000 01001101,左移8位得01001101 00000000
'M'<<8 | 'B' // 'B'为00000000 01000010,或运算后得01001101 01000010
因此字节为‘B'. 高字节为‘M’
字符串存储中低字节为首字符,依次类推, 因此得BM
iamcaicainiao
2006-01-14
打赏
举报
回复
上面说错了。char*类型得错误不是这。
iamcaicainiao
2006-01-14
打赏
举报
回复
#include <iostream.h>
#include <WINDOWS.H>
#define DIB_HEADER_MARKER ( (char )('M' << 8) | 'B')
void main(int argc, char* argv[])
{
cout<<(char ) ('M')<<"\n";//77
cout<<(char ) ('B')<<"\n";//66
cout<<(char ) ('M' << 8)<<"\n";//19712
cout<<DIB_HEADER_MARKER<<"\n";//19718
}
最终,m还是溢出。DIB_HEADER_MARKER就是66
iamcaicainiao
2006-01-14
打赏
举报
回复
如果是char*得话,似乎看上去是MB,但是事实上,这个程序就错了。
M左移8位,char*类型得,早就溢出了。
polytech
2006-01-13
打赏
举报
回复
如果是转换成字符型一起输出的话是MB,还是BM呢?
polytech
2006-01-13
打赏
举报
回复
好像是19778,但如果DIB_HEADER_MARKER的类型是CHAR* 而不是WORD,是MB,还是BM呢?
iamcaicainiao
2006-01-13
打赏
举报
回复
#include <iostream.h>
#include <WINDOWS.H>
#define DIB_HEADER_MARKER ((WORD) ('M' << 8) | 'B')
void main(int argc, char* argv[])
{
cout<<(WORD) ('M')<<"\n"; //77
cout<<(WORD) ('B')<<"\n"; //66
cout<<(WORD) ('M' << 8)<<"\n"; //19712
cout<<DIB_HEADER_MARKER<<"\n"; //19718
}
M的ascii码是77,二进制码是0000 0000 0100 1101
M左移8位变成0100 1101 0000 0000,也就是10进制的19712
B的ascii码是66,二进制码是0000 0000 0100 0010
M左移8位之后,再和B进行|运算,得到的结果就是0100 1101 0100 0010,也就是10进制的19718
最终结果不是MB,也不是BM,是19718
sankt
2006-01-13
打赏
举报
回复
有一个宏定义:#define DIB_HEADER_MARKER ((WORD) ('M' << 8) | 'B')
大家讨论讨论结果: DIB_HEADER_MARKER到底是"MB"还是“BM”,怎么通过编程查看字符串内容?
//=========
是:MB
M的ascii码是78,左移8位,加上B,然后就是MB
我啃
2006-01-13
打赏
举报
回复
DIB_HEADER_MARKER是用于产生DIB文件头的宏
DIB_HEADER_MARKER到底是"MB"还是“BM”,怎么通过编程查看字符串内容?
不懂??
Flutter零基础轻松入门:从入门到实战一次学会
】 PC端:https://edu.csdn.net/course/detail/26227 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起
讨论
哦~ 【学员专享增值服务】 源码开放 ...
工作中多
讨论
多交流的益处
其实,在平时的工作过程中,有时间的时候大家可以多
讨论
讨论
、多交流交流,特别是在遇到具体的开发困难时。大家在
讨论
过程中,可以从不同的角度来看待问题和分析问题,说出各自的想法和建议,这样往往在拓展我们...
ChatGPT探索系列之五:
讨论
人工智能伦理问题及ChatGPT的责任
ChatGPT发展到目前,其实网上已经有大量资料了,博主做个收口,会出一个ChatGPT探索系列的文章,帮助大家深入了解ChatGPT的。理解ChatGPT的背景和应用领域;学习GPT模型系列的发展历程和原理;探究ChatGPT的训练、...
Python实现:给定二叉树的先序遍历和中序遍历结果,确定该二叉树的后序遍历结果
最近在学习二叉树,遇到了这样一题,在这里给大家提供一种方法,可能不是最好的,仅供大家参考和相互交流学习。 已知一个二叉树前序遍历、中序遍历的结果,请确定该二叉树并输出其后序遍历的结果。 例如: 先序遍历...
面试——无领导小组
讨论
无领导小组
讨论
是群面中比较常见的方式之一,它通常是由6—10人个求职者为一组,针对面试官给出的问题,在规定的时间内(多为45min—1h)进行自由
讨论
,并最终就
讨论
内容达成统一意见,给出最后观点与解决方法。...
C++ 语言
64,647
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章