📄 crc.cpp
字号:
#include "StdAfx.h"
#include "t.h"
#include "Crc.h"
unsigned long CMathcrc::Reflect(unsigned long ref, char ch)
{
unsigned long value=0;
int i;
/* Swap bit 0 for bit 7
bit 1 for bit 6, etc.*/
for(i = 1; i < (ch + 1); i++)
{
if(ref & 1)
value |= 1 << (ch - i);
ref >>= 1;
}
return value;
}
/*init crc32 table */
void CMathcrc::Init_crc32Table()
{
int i,j ;
unsigned long ulPolynomial = 0x04c11db7;
crc32_init_b=1;
for(i= 0; i <= 0xFF; i++)
{
crc32_table[i]=Reflect(i, 8) << 24;
for (j = 0; j < 8; j++)
crc32_table[i] = (crc32_table[i] << 1) ^ (crc32_table[i] & (1 << 31) ? ulPolynomial : 0);
crc32_table[i] = Reflect(crc32_table[i], 32);
}
}
unsigned long CMathcrc::crc32(char* buffer,int len)
{
int i;
unsigned long ulCRC=0xffffffff;
if(crc32_init_b!=1)
Init_crc32Table();
for(i=0;i<len;i++)
ulCRC = crc32_table[(ulCRC ^ buffer[i]) & 0xFF]^(ulCRC >> 8);
return ulCRC ^ 0xffffffff ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -