用C ++编写二进制文件,unsigned char太小但其他数据类型添加了padding,还有其他选择吗?

时间:2010-08-08 23:35:19

标签: c++ binary alignment

我正在尝试用C ++写一个.bmp但是unsigned char不能保存足够高的值以满足我的需要,而其他数据类型添加填充因为特定的字节对齐会造成混乱。那么是否有一种替代数据类型可以保存更高的值,不会添加填充(或者使无符号字符值保持更高的值)?

2 个答案:

答案 0 :(得分:2)

如果先在数组中写入数据,则没有填充。

答案 1 :(得分:2)

听起来好像你误解了数据的存储方式。

如果你在内存中有一个bmp图像,它可能保存在内部结构(struct / class)中,但是你可以将它序列化为你写入文件的无符号字符(字节)数组。以二进制模式打开的文件不会添加任何比您编写的文件更多的内容。

see