现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

利用boost对文件进行CRC校验

2015-12-12 12:02 工业·编程 ⁄ 共 1197字 ⁄ 字号 暂无评论

// boost crc校验 
// made by davidsu33 
//crc_16_byte crc_32_byte 
 
#include "stdafx.h" 
#include <boost/crc.hpp> 
#include <boost/filesystem.hpp> 
#include <boost/io/ios_state.hpp> 
 
#include <iostream> 
#include <string> 
#include <fstream> 
#include <cassert> 
 
using namespace std; 
 
void calcFileCrc32(const string& fileName) 

    typedef boost::crc_32_type Crc32Byte; 
    typedef Crc32Byte::value_type Crc32ByteResultType; 
    namespace newfs = boost::filesystem; 
     
    boost::uintmax_t filesize = newfs::file_size(fileName); 
    assert(filesize > 0); 
 
    //计算文件的CRC32校验值 
    ifstream ifs(fileName, ios_base::in | ios_base::binary); 
    //ifs.open(fileName, std::ios_base::binary| std::ios_base::in); 
    if(!ifs) 
        assert(false); 
 
    char *fileData = new char[filesize]; 
    ifs.read(fileData, filesize); 
    ifs.close(); 
 
    Crc32Byte crc32; 
    crc32.process_bytes(fileData, filesize); 
 
    typedef boost::io::ios_base_all_saver IosAllSaver; 
    IosAllSaver iosAllSaver(cout); 
 
    Crc32ByteResultType ret = crc32.checksum(); 
     
    cout<<hex<<ret<<endl; 
    iosAllSaver.restore(); 
    cout<<"10000"<<endl; 

 
int _tmain(int argc, _TCHAR* argv[]) 

    string strFileName = "E:\\KuGou\\Stellar - T.I.E.mp3"; 
    calcFileCrc32(strFileName); 
 
    getchar(); 
    return 0; 

给我留言

留言无头像?