CRC-32 校验算法
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; }