首页 文章

c将二进制文件写入文件

提问于
浏览
0

我想尝试写入二进制文件的txt文件 .
现在我写了这段代码:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    char* f = "abc";
    ofstream ofile("D:\\foobar.txt", ios_base::out | ios_base::binary);
    ofile.write(f, sizeof(char*));
    return 0;
}

现在它写入"abc"但不是二进制文件 .
请有人请告诉我如何用二进制编写它 .

1 回答

  • 1

    首先,你写错了大小,可能会超出范围 . 请改用 strlen 来获取字符串的长度 .

    其次,想想像 'a' 这样的字母是如何存储在计算机的内存中的 . 它存储在编译器和操作系统使用的任何编码中,这很可能是ASCII . 当您将该字母写入文件时,它会将存储在内存中的值写入该文件,如果您使用能够解密编码的程序读取该文件,它将显示该字母 .

    我只是在这里猜测,但我认为你期望二进制格式写实际的和零作为文本 . 那么你写的是1和0,不是作为文本而是作为单独的位 . 当所有这些位组合成字节时,您将获得存储在内存中的字节 . 如果您在十六进制编辑器中查看文件,您将获得实际值,甚至可以找到一个程序,将实际二进制值显示为1和0 .

相关问题