数据32位CRC计算程序

来源:互联网 发布:视频爬虫 python 编辑:程序博客网 时间:2024/06/06 04:57

如下:

文件的CRC计算值与Winrar的结果完全一样。

 

点我下载源码

 

#ifndef __CRC_H__#define __CRC_H__#include <windows.h>#define CRC32_TABLE_NUM(256)#define CRC32_MAGIC(0x04c11db7L)#define CRC32_INVALID_VALUE(-1)class CCRC{public:CCRC();~CCRC();// 计算缓冲区CRCDWORD GetBufCrc32(LPBYTE lpBuf, DWORD dwSize);// 计算区块CRC, 三个函数依次调用void  StartBlock();// 初始化区块BOOL  AppendBlock(LPBYTE lpBuf, DWORD dwSize);// 增加区块DWORD GetBlockCrc32();// 返回当前CRC// 计算文件的CRCDWORD GetFileCrc32(LPCTSTR szFile);protected:void  InitCrc32();DWORD Reflect(DWORD dwRef, BYTE ch);private:DWORD m_dwCrc32Table[CRC32_TABLE_NUM];DWORD m_dwCrc32Block;};extern CCRC crc32;#endif // !__CRC_H__


测试例子:

#include "StdAfx.h"#include "Crc.h"#include <stdio.h>#include <stdlib.h>int main(){char szBuf[] = "123";printf("%08X\n\n", crc32.GetBufCrc32((LPBYTE)szBuf, strlen(szBuf)));crc32.StartBlock();crc32.AppendBlock((LPBYTE)szBuf, 1);crc32.AppendBlock((LPBYTE)szBuf+1, 1);crc32.AppendBlock((LPBYTE)szBuf+2, 1);printf("%08X\n\n", crc32.GetBlockCrc32());printf("%08X\n\n", crc32.GetFileCrc32("32.opt"));return 0;}


 

原创粉丝点击