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