使用C++ BITMAPFILEHEADER读取BMP文件时格式位bfType的问题。

在解读BMP格式文件时,发现bfType指定文件类型,必须是0x424D,即字符串“BM”,也就是说所有.bmp文件的头两个字节都是“BM”。然而在编程实现时只有使用0x... 在解读BMP格式文件时,发现bfType指定文件类型,必须是0x424D,即字符串“BM”,也就是说所有.bmp文件的头两个字节都是“BM”。然而在编程实现时只有使用0x4d42与bfType匹配时,才代表所读取的文件时bmp格式。另外,当输出该bfType的16进制值时发现,该值为0xcd7e。对此感到困惑,望诸位解答。 展开
 我来答
金色潜鸟
推荐于2018-04-13 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5540万
展开全部
估计你遇到大端,小端,无符号2字节整型,无符号4字节整型问题。
bmp文件 是2进制文件,但 BM 仍可用眼识别:DOS 命令窗,打 more 文件名.bmp 你可以看到 BM 两字。

比较时用(windows 系统,小端机):
bfType == ((WORD) ('M' << 8) | 'B'))
bfType 是无符号2字节整型。

其实自己打开文件后,读2个字符,看是否 'B' 'M' 就可以了,rewind() 回文件头,再对比你的别的方法。
B 的 ASCII 编码值 0x42, M 的 ASCII 编码值 0x4d.
0xxcd7e 大概是读到 第3第4字节去了。
不宜然EG
2013-03-12 · TA获得超过102个赞
知道答主
回答量:236
采纳率:0%
帮助的人:129万
展开全部
代码有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式