CRC

解决方案 »

  1.   

    http://www.cnblogs.com/FPGA_DSP/archive/2010/05/08/1730529.html
      

  2.   

    .生成多项式 : x7+x6+x5+x2+1
    这是啥?不明白你想表达什么CRC是循环冗余校验,分为CRC-16和CRC-32(分别为2字节和4字节)
    网上能找到代码,算法并不复杂,也可以自己写.
      

  3.   

    这个是自定义的CRC生成多项式
      

  4.   

    我觉得你是把CRC和别的什么校验搞混了.
    CRC是没有生成多项式的概念的,你硬加进去,就已经不是CRC校验了
    你只能按自己的规则,自己生成校验,而接收方也必须按这个规则来校验而我完全没看懂你给的多项式代表什么含义
      

  5.   

    我觉得你是把CRC和别的什么校验搞混了.
    CRC是没有生成多项式的概念的,你硬加进去,就已经不是CRC校验了
    你只能按自己的规则,自己生成校验,而接收方也必须按这个规则来校验而我完全没看懂你给的多项式代表什么含义
    CCITT-16即CRC16,其生成多项式为G(x)=x16+x12+x5+1
    现在就是修改看这个多项式
      

  6.   

    自己解决了,留给后来人  public  int CRC7_Cal(byte[] buffer,int cnt)
            {
                int CRC7 =0xE5;  //x7+x6+x5+x2+1
                int count = 0;
                int temp1 = 0;
                int temp2 = 0;
                int crc = buffer[0];
                count = 8;
                    //CRC校验
                    while (count < cnt * 8)
                    {
                        temp1 = crc & 0x80;   //移除最高位0
                        while (0 == temp1)
                        {
                            crc = (crc << 1) & 0xfe;
                            temp2 = buffer[count / 8];
                            temp2 = (temp2 >> (7 - (count % 8))) & 0x01;
                            crc = crc | temp2;
                            temp1 = crc & 0x80;
                            count++;
                            if (count == cnt * 8) break;
                        }
                        if ((count == cnt * 8) && (0 == temp1)) break;
                        crc = crc ^ CRC7;
                    }
                    return crc;
            }