写二进制数据

时间:2009-09-09 17:24:52

标签: c++ c binary fstream

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

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

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

3 个答案:

答案 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)

相关问题