解决方案 »

  1.   


    public byte crc_8n(byte[] data,int n)
    {
            byte crc = 0x00;        //CRC preset
           int i, j;
            byte poly = 0x8C; //CRC polynom
            for (i=0;i<n;i++)
            {
            crc ^= data[i];
            for (j=0; j<8; j++)
            {
                if (crc&1) 
                {
                    crc = (crc>>1) ^ poly;
                }
                else
                {
                    crc = (crc>>1);
                }
            }
        }
         return crc;
    }
      

  2.   


     if (crc&1) 这能通过编码嘛
      

  3.   


     if (crc&1) 这能通过编码嘛
    if (crc&1) ==应该类似于if (crc&0xff)
    后面的自己解决吧,大同小异的
      

  4.   

    public byte crc_8n(byte[] data, int n)
            {
                byte crc = 0x00;
                int i, j;
                byte poly = 0x8C;
                for (i = 0; i < n; i++)
                {
                    crc ^= data[i];
                    for (j = 0; j < 8; j++)
                    {
                        if ((crc & 1) != 0)
                        {
                            crc = Convert.ToByte((crc >> 1) ^ poly);
                        }
                        else
                        {
                            crc = Convert.ToByte(crc >> 1);
                        }
                    }
                }
                return crc;
            } 
    改了几个地方 不过谢谢了
      

  5.   

    c++里,if(1)和if(2)都是可以通过编译的,反正大于0就认为是true,是0就认为是false
    c#里,改为if((crc&1)!=0)