我正在尝试使用 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)打印出这些东西。
关于c++ - 以二进制形式打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15932836/