我正在尝试使用 C++ 打开文件。该文件可以是任何类型。我想做的事情是打开文件,因为它存储在内存中。
假设它是一个 1 字节的文本文件并以 10000011 的形式存储在内存中,那么我想使用 C++ 以这种格式打开文件,就像它在计算机中的存储方式一样。
怎么做?
我正在尝试使用 C++ 打开文件。该文件可以是任何类型。我想做的事情是打开文件,因为它存储在内存中。
假设它是一个 1 字节的文本文件并以 10000011 的形式存储在内存中,那么我想使用 C++ 以这种格式打开文件,就像它在计算机中的存储方式一样。
怎么做?
您可以通过调用 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)。