多项式用的是ccitt的权CRC-CCITT=X16+X12+X5+1。比如说我接收了一个针,寸放在一个byte[]中,我现在想检测一下这个针是否是好针还是坏针!!
目前我知道的是用byte[]的内容与ccitt的权异或,最后结果如果为0就说明是正确的。如果不为0就说明是错误的。要求重新发!!
但是小弟知识不够呀。写不出这样的算法来。谁能帮我一下。谢谢了!!!
我的emal是[email protected]。贴上来或是发到油箱里都可以!!!

解决方案 »

  1.   

    有公式了还写不出来?
    注意一点,它是对8位或16位还是32位做循环crc校验
      

  2.   

    很多啊
    http://blog.ednchina.com/hongbobo/49701/message.aspxCRC源码及分析
    http://www.powerprotocol.com.cn/CRC/crcver.pdf这个更强大
    http://www.google.cn/search?rlz=1C1GGLS_zh-CNCN298CN303&sourceid=chrome&ie=UTF-8&q=crc校验
      

  3.   

    unsigned int CRC16_Bit(unsigned char *dat, unsigned char len)
    {/* 按位计算CRC16 */
    unsigned char i;
    unsigned int crc=0;
    while((len--) != 0) 
    {
    for(i = 0x80; i != 0; i >>= 1) 
    {
    /* 余式CRC乘以2再求CRC */
    if((crc & 0x8000) != 0)
    {
    crc <<= 1;
    crc ^= 0x1021;

    else
    {
    crc <<= 1;
    }
    /* 再加上本位的CRC */
    if((*dat & i)!=0) 
    {
    crc ^= 0x1021; 
    }
    }
    dat++;
    }
    return(crc & 0xFFFF);
    }