我使用fstream写入二进制文件,并使用二进制标志打开文件。

我需要将一些文本写成二进制文件,这是一个简单的写操作。 问题是我还需要写(如十六进制所示)0。在二进制记事本中打开时的值显示为零,但是当试图将此值写为零时,它的值为十六进制值为30。

如何编写这样的特定数据?

有帮助吗?

解决方案

打开fstream时,使用 ios :: binary 标志指定二进制输出。有关详细信息,请访问此处

至于写0,当你在十六进制中看到30时,你正在写字符'0',而不是二进制数0.为了用fstream做这个,你可以这样做:

my_fstream << 0;

请记住,二进制数据0没有文本表示,因此您将无法在记事本中读取它,就像您能够读取字符“0”一样。

其他提示

你可能只需要这样的东西,根据你的需要进行改进:

ofstream file("output.bin", ios::out | ios::binary);
if (file.good())
{
    char buf[1] = {0};
    file.write(buf, sizeof(buf));
    file.close();
}

已发布更复杂的解决方案和文档的链接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top