crc循环冗余校验

palm008 2013-01-31 04:43:29
假设,我的原始数据是:0x01,0x10。校验多项式是:0X13
手动算出校验值应该是:0x6

程序算出的校验值不正确 求高人指点程序的错误

#include <stdio.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uchar crc=0;
uchar crc4(uchar *ptr,uchar len) // ptr 为数据指针,len 为数据长度
{
uchar i;
while(len--)
{

for(i=0x80; i!=0; i>>=1)
{
if((crc&0x10)!=0)
{
crc<<=1;
crc^=0x13;//0x13为多项式
}
else
{
crc<<=1;
}
if(((*ptr)&i)!=0)
{
crc^=0x13;
}
}
ptr++;
}
return(crc);
}
int main()
{
uchar data[]={0x01,0x10};
uchar *pp = data;
uchar p = crc4(pp,2);
printf("%0X\n",p);
return 0;
}
...全文
124 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xumaojun 2013-01-31
  • 打赏
  • 举报
回复
crc校验网上资料很多的
AnYidan 2013-01-31
  • 打赏
  • 举报
回复
google, 网上大堆
palm008 2013-01-31
  • 打赏
  • 举报
回复
是不是发错版块了,为何无人问津

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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