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

ファイルの 1 バイトを読み取ります。次に、バイナリと演算 (&) で単一ビットにアクセスできます。この値をバイナリ (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 に答える