http://www.cnblogs.com/hantianwei/archive/2012/11/13/2767649.html

解决方案 »

  1.   

    static ushort crc_16(byte[] rcvs, byte[] rcvbuf, int len)
    {
    uint ix, iy, crc;
    if(len <= 0)
       return 0;
    len--;
    crc =  0;
    for(ix = 0; ix <= len; ix++)
    {
    crc = crc ^ rcvs[ix];
    for(iy = 0; iy <= 7; iy ++)
    {
    if((crc & 1) != 0)
      crc = (crc >> 1) ^ 0xA001;
    else
      crc = crc >> 1;
    }
    }
    rcvbuf[0] = (byte)((crc & 0xff00) >> 8);
    rcvbuf[1] = (byte)(crc & 0xff00);
    crc = (uint)(rcvbuf[0] << 8);
    crc += rcvbuf[1];
    return (ushort)crc;