Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2073298
  • 博文数量: 288
  • 博客积分: 10594
  • 博客等级: 上将
  • 技术积分: 3469
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-27 19:27
文章分类

全部博文(288)

文章存档

2012年(4)

2011年(30)

2010年(40)

2009年(32)

2008年(71)

2007年(79)

2006年(32)

分类: C/C++

2008-07-29 16:35:58

#define crc_mul 0x1021    /*生成多项式*/
unsigned int cal_crc(unsigned char *ptr,unsigned char len) {
  unsigned char i;
  unsigned int crc=0;
  while(len--!=0) {
    for(i=0x80; i!=0; i/=2) {
      if((crc&0x8000)!=0) {crc*=2; crc^=crc_mul;}   /* 余式CRC乘以2再求CRC  */
        else crc*=2;
      if((*ptr&i)!=0) crc^=crc_mul;                /* 再加上本位的CRC */
    }
    ptr++;
  }
  return(crc);
}
 /*测试代码*/
main()
{
  unsigned char i[8] = { 0x00,0x00,0x00,0x00,0x06,0x0d,0xd2,0xe3};/*{0x12,0x23,0xa5,0x86,0x07};*/
  unsigned int crc;
  crc=cal_crc(&i,8);
  printf("%x",crc);
  getch();
}
阅读(11372) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~