以二进制形式打开文件

时间:2013-04-10 17:47:51

标签: c++ byte file-handling

我正在尝试使用C ++打开文件。该文件可以是任何类型。我想要做的是打开文件,因为它存储在内存中。

假设它是1字节的文本文件并以10000011的形式存储在内存中,那么我想使用C ++以这种格式打开文件,就像它存储在计算机中一样。

怎么做?

1 个答案:

答案 0 :(得分:5)

您可以通过调用fopen函数打开二进制格式的文件,如:

FILE* f = fopen(filename, "rb");

现在你无法逐位读取文件,但你必须至少逐字节地读取它(因为字节是你应该使用的最小单位),例如:

unsigned char value;
fread(&value, 1, 1, sizeof(unsigned char));

将读取文件的单个字节。然后,您可以通过二进制和操作(&)访问单个位,将此值打印为二进制(例如0和1)可以这样完成:

    printf("%d%d%d%d%d%d%d%d\n", 
           value & 0x80 ? 1 : 0, 
           value & 0x40 ? 1 : 0, 
           value & 0x20 ? 1 : 0, 
           value & 0x10 ? 1 : 0, 
           value & 0x8 ? 1 : 0, 
           value & 0x4 ? 1 : 0, 
           value & 0x2 ? 1 : 0, 
           value & 0x1 ? 1 : 0);

当然这些是C标准函数,你也可以使用C ++函数来开放使用:

  ifstream file (filename, ios::in|ios::binary);

阅读时您可以使用:

  file.read(valueAddress, sizeInBytes);

你应该知道如何打印出来的东西(和cout一起)。