我使用fstream写入二进制文件,并使用二进制标志打开文件。
我需要将一些文本写成二进制文件,这是一个简单的写操作。 问题是我还需要写(如十六进制所示)0。在二进制记事本中打开时的值显示为零,但是当试图将此值写为零时,它的值为十六进制值为30。
如何编写这样的特定数据?
答案 0 :(得分:3)
你可能只需要这样的东西,根据你的需要进行改进:
ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
char buf[1] = {0};
file.write(buf, sizeof(buf));
file.close();
}
已经发布了更复杂的解决方案和文档的链接。
答案 1 :(得分:1)
打开fstream时,使用ios::binary
标志指定二进制输出。可以找到更多信息here。
至于写0,当你在十六进制中看到30时,你正在写字符'0',而不是二进制数0.要用fstream做这个,你可以这样做:
my_fstream << 0;
请记住,二进制数据0没有文本表示,因此您将无法在记事本中读取它,就像您能够读取字符“0”一样。
答案 2 :(得分:1)