[C++]提取BMP文件时,位运算实现BYTE数组转换DWORD

一、背景介绍:

在从一个数据包中提取BMP图像数据时,发现其不像JPG文件有开始标志位0xFFD8和结束标志位0xFFD9的机制。但BMP文件以一个名为BITMAPFILEHEADER的结构体开始,该结构体共占用14个字节。其结构如下图所示:
在这里插入图片描述 一个BMP文件总是以0x424D开始,也就是BITMAPFILEHEADER中的bfType变量的值。那么可以将bfType变量的地址作为BMP文件的起始地址,提取长度为bfSize的字节数组就可得到该BMP文件的全部数据。用UltraEdit打开一个BMP文件,部分文件结构如下图所示:
在这里插入图片描述
我们可以发现紧接着文件类型变量bfType(前两个字节,0x424D),bfSize的值为0x000AFCB6(小端存储方式,较高数据位存放在较低地址位),换算成10进制即为720054,说明该文件大小为720054字节。文件属性如下图所示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值