有关CRC校验 的问题
crc32校验的问题
crc_32_tab[256] 是参数表
函数 校验码产生式
unsigned long SendDataBuffer::GenerateCRC32(char *DataBuf,unsigned long len)
{
unsigned long oldcrc32;
unsigned long crc32;
unsigned long oldcrc;
unsigned int charcnt;
char c,t;
oldcrc32 = 0x00000000; //初值为0
charcnt=0;
while (len--)
{
t = (oldcrc32 >> 24) & 0xFF; oldcrc=crc_32_tab[t]; //3
c=DataBuf[charcnt];
oldcrc32= (oldcrc32 << 8) | c;
oldcrc32=oldcrc32^oldcrc;
charcnt++;
}
crc32=oldcrc32;
return crc32;
}
问题,在我的系统中,服务器,客户端同样的函数,算不到相同的校验码
比如同样是
char a[8]= "000000";
unsigned int newcrcdata= manager1->GenerateCRC32(a,8);
却计算不到相同的值
跟踪执行发现在最后一次计算oldcrc=crc_32_tab[t]; 会不一样。
一边总等于0。一边不
这是怎么回事