crc16计算

luobinshan 2011-06-18 12:23:08
16byte的待校验数据, 最后生成2byte的crc值
由下列多项式生成校验序列码:X16+X13+X12+X11+X10+X8+X6+X5+X2+1
注:此规范生成的16比特校验序列需按位取反。

从网上找了几个crc的源码, 但是计算结果都不相同, 或者是生成多项式不同。
给出这个函数最好, 呵呵
u16 crc16(u8 *buf, int len);
...全文
238 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
v991 2011-09-22
  • 打赏
  • 举报
回复
我的crc算出来也不一样
canican 2011-06-18
  • 打赏
  • 举报
回复
生成多项式不同,结果当然不同了,
楼主的是个非标的多项式0x3d65,试试下边的代码

unsigned int crc_chk(unsigned char *data, unsigned char length)
{
int j;
unsigned int reg_crc=0xffff;
while(length--)
{
reg_crc^=*data++;
for(j=0;j<8;j++)
{
if(reg_crc&0x01)
{
reg_crc=(reg_crc>>1)^0x3d65;
}
else
{
reg_crc=reg_crc>>1;
}
}
}
return reg_crc;
}

70,021

社区成员

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

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