注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

_

_

 
 
 

日志

 
 

CRC32 源代码  

2011-12-30 22:01:43|  分类: VC C++ MFC JAVA |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

CRC32 源代码, Visual C++ ,VC++代码,节省生成程序空间

2010-08-07 22:53

//这里是头文件 CRC32.h

#ifndef _CRC32_HEAD_INCLUDE_
#define _CRC32_HEAD_INCLUDE_

DWORD WINAPI CRC32(LPBYTE Data,DWORD len);
DWORD WINAPI CRC32_Add(LPBYTE Data,DWORD len,DWORD last_CRC);

#endif // #ifndef _CRC32_HEAD_INCLUDE

//这里是cpp文件 CRC32.cpp,stdafx.h需要#include <windows.h>

//by: SKY 2010-8-7

#include "stdafx.h"

DWORD crc32tbl[256];
BOOL init = FALSE;

void init_crc32_table(){
DWORD crc,i,j;
for(i=0;i<256;i++)
{
   crc=i;
   for(j=0;j<8;j++)
   {
    if(crc&1)
     crc=(crc>>1)^0xEDB88320; // CRC32多项式值
    else
     crc>>=1;
   }
   crc32tbl[i]=crc;
}
}

DWORD WINAPI CRC32(LPBYTE Data,DWORD len)   //CRC32生成函数,使用 __stdcall
{
if(!init)
{
   init_crc32_table();
   init=TRUE;
}
DWORD dwCRC = 0xFFFFFFFF;
for(register DWORD i = 0;i < len;i++)
   dwCRC=crc32tbl[(dwCRC^Data[i])&0xFF]^(dwCRC>>8);
return ~dwCRC;
}

DWORD WORD WINAPI CRC32_Add(LPBYTE Data,DWORD len,DWORD last_CRC) //CRC32,第三个参数可以继续运算
{
if(!init)
{
   init_crc32_table();
   init=TRUE;
}
DWORD dwCRC = ~last_CRC;
for(register DWORD i = 0;i < len;i++)
   dwCRC=crc32tbl[(dwCRC^Data[i])&0xFF]^(dwCRC>>8);
return ~dwCRC;
}

  评论这张
 
阅读(1233)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017