c++实现如下:
CRC校验方式:unsigned short Crc16(uint crcdata, uchar bufdata){uchar i;crcdat  ^= bufdata;for( i = 8; i>0; i--){  crcdata >>= 1;if( crcdata&0x01)  crcdata ^= 0xa001;}return crcdata;}unsigned short MyCRC16(unsigned char *puchMsg, unsigned short usDataLen)//puchMsg ; /* 要进行CRC 校验的消息*///usDataLen ; /* 消息中字节数*/{uint crcdata = 0xffff;while (usDataLen--) /* 传输消息缓冲区*/{  crcdata  = Crc16(crcdata, *puchMsgg++);}return crcdata  ;}
翻译成c#版是什么样的啊?大家帮帮忙,自己写的c#的crc检验,和这个算出来的不一样!
下面是我的CRC检验:
public ushort CRC16(byte[] datas, int beginIdx, int len)
        {
            const ushort polinomio = 0xa001;
            ushort result = 0xffff;
            //for (int i = beginIdx; i < len; i++)
            for (int i = len - 1; i >= beginIdx; i--)
            {
                byte tmp = datas[i];
                result = (ushort)(tmp ^ result);
                for (int j = 8; j >0; j--)
                {
                    result = (ushort)(result >> 1);
                    if ((result & 0x01) == 1)
                    {
                        //result = (ushort)((result >> 1) ^ polinomio);
                        result = (ushort)(result ^ polinomio);
                    }
                }
            }
            return result;
        }应该和上面的意思差不多的啊!