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;
}
...全文
59 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xumaojun 2013-01-31
crc校验网上资料很多的
  • 打赏
  • 举报
回复
AnYidan 2013-01-31
google, 网上大堆
  • 打赏
  • 举报
回复
palm008 2013-01-31
是不是发错版块了,为何无人问津
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-01-31 04:43
社区公告
暂无公告