多项式x7+x6+x5+x2+1
 希望能得到c语言的求crc校验码函数

解决方案 »

  1.   


    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^=0x1021;} /* 余式CRC乘以2再求CRC */
    else crc*=2;
    if((*ptr&i)!=0) crc^=0x1021; /* 再加上本位的CRC */
    }
    ptr++;
    }
    return(crc);
    }
    http://www.fjbmcu.com/chengxu/crcsuan.htm
      

  2.   

    我使用的代码
    u_short CPCAP::CheckSum(u_short *buffer, int nSize)
    {
      unsigned long cksum=0;  while(nSize >1) 
      {
    cksum += *buffer++;
    nSize -= sizeof(u_short);
      }
      
      if(nSize) 
      {
    cksum += *(u_char*)buffer;
      }  cksum = (cksum >> 16) + (cksum & 0xffff);
      cksum += (cksum >>16);
      return (u_short)(~cksum);
    }