免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1494 | 回复: 1
打印 上一主题 下一主题

请教CRC校验问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-23 09:29 |只看该作者 |倒序浏览
查表的CRC校验方法,协议中告知了一个CRC16的多项式0xA001,这个有什么用,或者是怎么用?哪位写过类似的,请帮忙,谢谢。

论坛徽章:
0
2 [报告]
发表于 2006-08-23 13:36 |只看该作者
这样产生一个CRC16 table是正确的吗?

  1. #include "stdio.h"

  2. unsigned int crc(int data,int genpoly,int accum)

  3. {

  4.    int   i=0;
  5.    data<<=8;

  6.    for(i=8;i>0;i--)
  7.    {

  8.      if((data^accum)&0x800)

  9.      accum=(accum<<1)^genpoly;

  10.      else accum<<=1;
  11.      data<<=1;

  12.    }
  13.    return accum;
  14. }

  15. int main(void)
  16. {


  17.      char   j;
  18.      int    i;
  19.      unsigned int crc16_tab[256];

  20.      for(i=0;i<=255;i++)
  21.      {
  22.          crc16_tab[i]=crc(i,0xa001,0);
  23.      }


  24.      for(i=0;i<256;i++)
  25.      {
  26.          crc16_tab[i]=crc(i,255,0);
  27.      }
  28.      
  29.     /* for(i=0;i<256;i++)
  30.      {
  31.          if(i==1 || i==2 || i==3)
  32.          {
  33.            printf("pause...");
  34.            scanf("%c",&j);
  35.          }
  36.          printf("%x  ",crc16_tab[i]);
  37.          if(i%8==0)
  38.             printf("\n");
  39.      }*/
  40.      return 0;
  41. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP