2013-03-12 68 views
-4

我想编写一个程序来打开二进制文件并使用DES对其进行加密。如何读取C++中的二进制文件

但是我怎样才能读取二进制文件?

+0

欢迎到SO。请注意,您应该提供更多信息。也没有显示你的努力。你有什么尝试?阅读[常见问题](http://stackoverflow.com/faq):) – LihO 2013-03-12 16:26:10

回答

3

“我怎样才能读取二进制文件?”

如果你想读的二进制文件,然后再处理它的数据(加密,压缩等),那么它似乎是合理的将其加载到表单中的内存,这将是容易的工作。我建议你使用std::vector<BYTE>其中​​是一个unsinged char

#include <fstream> 
#include <vector> 
typedef unsigned char BYTE; 

std::vector<BYTE> readFile(const char* filename) 
{ 
    // open the file: 
    std::streampos fileSize; 
    std::ifstream file(filename, std::ios::binary); 

    // get its size: 
    file.seekg(0, std::ios::end); 
    fileSize = file.tellg(); 
    file.seekg(0, std::ios::beg); 

    // read the data: 
    std::vector<BYTE> fileData(fileSize); 
    file.read((char*) &fileData[0], fileSize); 
    return fileData; 
} 

使用此功能,您可以轻松地将文件加载到载体是这样的:

std::vector<BYTE> fileData = readfile("myfile.bin"); 

希望这有助于:)

+0

如果OP继承了'std :: fstream'并创建了一个在类中透明编码解码的'fencryptstream',那将会很酷。 – 2013-03-12 17:22:39

+0

LihO“可以使用大小最大为250MB的大文件,请帮助我” – 2013-03-13 14:34:15

+0

@ MohmmadAL-helawe:如果您遇到大文件的问题,请将其作为一个新问题发布:)只要确保描述了您的问题得当,让人们可以帮助你:) – LihO 2013-03-13 14:41:47