2013-04-10 195 views
1

我想用C++打開一個文件。該文件可以是任何類型。我試圖做的事情是打開存儲在內存中的文件。以二進制形式打開文件

假設它是一個1字節的文本文件並作爲10000011存儲在內存中,那麼我想使用C++以這種格式打開文件,例如它如何存儲在計算機中。

如何做?

+0

請告訴我們你到目前爲止所以我們知道在哪裏可以幫到你。 – 2013-04-10 17:50:24

+0

我想我明白了......等等,什麼? – 2013-04-10 17:50:30

+0

http://www.cplusplus.com/reference/fstream/ifstream/open/ – 2013-04-10 17:53:13

回答

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

相關問題