crc32的头文件
===========================分割线===========================
//crc32.h
#ifndef _CRC32_H
#define _CRC32_H
uint crc32( uchar *buf, int len);
#endif
===========================分割线===========================
crc32的源文件
===========================分割线===========================
#include <stdio.h>
#include "crc32.h"
static uint CRC32[256];
static char init = 0;
//初始化表
static void init_table()
{
int i,j;
uint crc;
for(i = 0;i < 256;i++)
{
crc = i;
for(j = 0;j < 8;j++)
{
if(crc & 1)
{
crc = (crc >> 1) ^ 0xEDB88320;
}
else
{
crc = crc >> 1;
}
}
CRC32[i] = crc;
}
}
//crc32实现函数
uint crc32( uchar *buf, int len)
{
uint ret = 0xFFFFFFFF;
int i;
if( !init )
{
init_table();
init = 1;
}
for(i = 0; i < len;i++)
{
ret = CRC32[((ret & 0xFF) ^ buf[i])] ^ (ret >> 8);
}
ret = ~ret;
return ret;
}