1

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

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

怎么做?

4

1 回答 1

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)。

于 2013-04-10T18:00:26.027 回答