问题描述
我正在尝试使用C ++创建BITMAP图像。
代码:
#include <stdio.h>
#include <fstream>
using namespace std;
struct BMPHeader{
short int file_type = 0x4d42;
int file_size = 0;
};
int main(){
struct BMPHeader img;
printf("%ld",sizeof(img.file_type));
ofstream f1;
f1.open("output.bmp",ios::out);
f1.write(reinterpret_cast <char *> (&img),sizeof(img));
f1.close();
return 0;
}
现在,如果我使用xxd
查看得到的output.bmp文件
$ xxd output.bmp
00000000: 424d 0000 0000 0000 BM......
此处,变量“ file_type”在存储时变为4个字节。但是sizeof()
的输出为2个字节。
现在,如果未声明变量“ file_size”,则将其存储为2个字节(这是我想要的)。
struct BMPHeader{
short int file_type = 0x4d42;
//int file_size = 0;
};
xxd output.bmp
00000000: 424d BM
我在做什么错了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)