有关CRC校验 的问题

pearlriver 2003-08-30 09:07:09
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。一边不
这是怎么回事


...全文
30 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pearlriver 2003-08-30
  • 打赏
  • 举报
回复
为什么算到len =0 的最后的t时就变负值了
mme 2003-08-30
  • 打赏
  • 举报
回复
你看看t的值,是不是数组越界了.
nicolas2001 2003-08-30
  • 打赏
  • 举报
回复
gz

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧