CRC-CCITT标准生成CRC校验码

//***************************************************************
//这里以CRC-CCITT标准生成多项式。CRC-CCITT是一个17位生成多项式
//G=[1 0001 0000 0010 0001],用多项式形式表示为G(x)=x16+x12
//+x5+1,由它产生的检验码R的二进制位数是16位(2字节)。

JAVA版:

package crc16_half;
import javax.xml.bind.DatatypeConverter;
import java.io.IOException;
public class half_crc {
 static byte[] ha00 = {
     (byte)0x00,(byte)0x10,(byte)0x20,(byte)0x30,(byte)0x40,(byte)0x50,(byte)0x60,(byte)0x70,(byte)0x81,(byte)0x91,(byte)0xA1,(byte)0xB1,(byte)0xC1,(byte)0xD1,(byte)0xE1,(byte)0xF1,
     (byte)0x12,(byte)0x02,(byte)0x32,(byte)0x22,(byte)0x52,(byte)0x42,(byte)0x72,(byte)0x62,(byte)0x93,(byte)0x83,(byte)0xB3,(byte)0xA3,(byte)0xD3,(byte)0xC3,(byte)0xF3,(byte)0xE3,
     (byte)0x24,(byte)0x34,(byte)0x04,(byte)0x14,(byte)0x64,(byte)0x74,(byte)0x44,(byte)0x54,(byte)0xA5,(byte)0xB5,(byte)0x85,(byte)0x95,(byte)0xE5,(byte)0xF5,(byte)0xC5,(byte)0xD5,
     (byte)0x36,(byte)0x26,(byte)0x16,(byte)0x06,(byte)0x76,(byte)0x66,(byte)0x56,(byte)0x46,(byte)0xB7,(byte)0xA7,(byte)0x97,(byte)0x87,(byte)0xF7,(byte)0xE7,(byte)0xD7,(byte)0xC7,
     (byte)0x48,(byte)0x58,(byte)0x68,(byte)0x78,(byte)0x08,(byte)0x18,(byte)0x28,(byte)0x38,(byte)0xC9,(byte)0xD9,(byte)0xE9,(byte)0xF9,(byte)0x89,(byte)0x99,(byte)0xA9,(byte)0xB9,
     (byte)0x5A,(byte)0x4A,(byte)0x7A,(byte)0x6A,(byte)0x1A,(byte)0x0A,(byte)0x3A,(byte)0x2A,(byte)0xDB,(byte)0xCB,(byte)0xFB,(byte)0xEB,(byte)0x9B,(byte)0x8B,(byte)0xBB,(byte)0xAB,
     (byte)0x6C,(byte)0x7C,(byte)0x4C,(byte)0x5C,(byte)0x2C,(byte)0x3C,(byte)0x0C,(byte)0x1C,(byte)0xED,(byte)0xFD,(byte)0xCD,(byte)0xDD,(byte)0xAD,(byte)0xBD,(byte)0x8D,(byte)0x9D,
     (byte)0x7E,(byte)0x6E,(byte)0x5E,(byte)0x4E,(byte)0x3E,(byte)0x2E,(byte)0x1E,(byte)0x0E,(byte)0xFF,(byte)0xEF,(byte)0xDF,(byte)0xCF,(byte)0xBF,(byte)0xAF,(byte)0x9F,(byte)0x8F,
     (byte)0x91,(byte)0x81,(byte)0xB1,(byte)0xA1,(byte)0xD1,(byte)0xC1,(byte)0xF1,(byte)0xE1,(byte)0x10,(byte)0x00,(byte)0x30,(byte)0x20,(byte)0x50,(byte)0x40,(byte)0x70,(byte)0x60,
     (byte)0x83,(byte)0x93,(byte)0xA3,(byte)0xB3,(byte)0xC3,(byte)0xD3,(byte)0xE3,(byte)0xF3,(byte)0x02,(byte)0x12,(byte)0x22,(byte)0x32,(byte)0x42,(byte)0x52,(byte)0x62,(byte)0x72,
     (byte)0xB5,(byte)0xA5,(byte)0x95,(byte)0x85,(byte)0xF5,(byte)0xE5,(byte)0xD5,(byte)0xC5,(byte)0x34,(byte)0x24,(byte)0x14,(byte)0x04,(byte)0x74,(byte)0x64,(byte)0x54,(byte)0x44,
     (byte)0xA7,(byte)0xB7,(byte)0x87,(byte)0x97,(byte)0xE7,(byte)0xF7,(byte)0xC7,(byte)0xD7,(byte)0x26,(byte)0x36,(byte)0x06,(byte)0x16,(byte)0x66,(byte)0x76,(byte)0x46,(byte)0x56,
     (byte)0xD9,(byte)0xC9,(byte)0xF9,(byte)0xE9,(byte)0x99,(byte)0x89,(byte)0xB9,(byte)0xA9,(byte)0x58,(byte)0x48,(byte)0x78,(byte)0x68,(byte)0x18,(byte)0x08,(byte)0x38,(byte)0x28,
     (byte)0xCB,(byte)0xDB,(byte)0xEB,(byte)0xFB,(byte)0x8B,(byte)0x9B,(byte)0xAB,(byte)0xBB,(byte)0x4A,(byte)0x5A,(byte)0x6A,(byte)0x7A,(byte)0x0A,(byte)0x1A,(byte)0x2A,(byte)0x3A,
     (byte)0xFD,(byte)0xED,(byte)0xDD,(byte)0xCD,(byte)0xBD,(byte)0xAD,(byte)0x9D,(byte)0x8D,(byte)0x7C,(byte)0x6C,(byte)0x5C,(byte)0x4C,(byte)0x3C,(byte)0x2C,(byte)0x1C,(byte)0x0C,
     (byte)0xEF,(byte)0xFF,(byte)0xCF,(byte)0xDF,(byte)0xAF,(byte)0xBF,(byte)0x8F,(byte)0x9F,(byte)0x6E,(byte)0x7E,(byte)0x4E,(byte)0x5E,(byte)0x2E,(byte)0x3E,(byte)0x0E,(byte)0x1E}; 
  static byte[] la00 = {
      (byte)0x00,(byte)0x21,(byte)0x42,(byte)0x63,(byte)0x84,(byte)0xA5,(byte)0xC6,(byte)0xE7,(byte)0x08,(byte)0x29,(byte)0x4A,(byte)0x6B,(byte)0x8C,(byte)0xAD,(byte)0xCE,(byte)0xEF,
      (byte)0x31,(byte)0x10,(byte)0x73,(byte)0x52,(byte)0xB5,(byte)0x94,(byte)0xF7,(byte)0xD6,(byte)0x39,(byte)0x18,(byte)0x7B,(byte)0x5A,(byte)0xBD,(byte)0x9C,(byte)0xFF,(byte)0xDE,
      (byte)0x62,(byte)0x43,(byte)0x20,(byte)0x01,(byte)0xE6,(byte)0xC7,(byte)0xA4,(byte)0x85,(byte)0x6A,(byte)0x4B,(byte)0x28,(byte)0x09,(byte)0xEE,(byte)0xCF,(byte)0xAC,(byte)0x8D,
      (byte)0x53,(byte)0x72,(byte)0x11,(byte)0x30,(byte)0xD7,(byte)0xF6,(byte)0x95,(byte)0xB4,(byte)0x5B,(byte)0x7A,(byte)0x19,(byte)0x38,(byte)0xDF,(byte)0xFE,(byte)0x9D,(byte)0xBC,
      (byte)0xC4,(byte)0xE5,(byte)0x86,(byte)0xA7,(byte)0x40,(byte)0x61,(byte)0x02,(byte)0x23,(byte)0xCC,(byte)0xED,(byte)0x8E,(byte)0xAF,(byte)0x48,(byte)0x69,(byte)0x0A,(byte)0x2B,
      (byte)0xF5,(byte)0xD4,(byte)0xB7,(byte)0x96,(byte)0x71,(byte)0x50,(byte)0x33,(byte)0x12,(byte)0xFD,(byte)0xDC,(byte)0xBF,(byte)0x9E,(byte)0x79,(byte)0x58,(byte)0x3B,(byte)0x1A,
      (byte)0xA6,(byte)0x87,(byte)0xE4,(byte)0xC5,(byte)0x22,(byte)0x03,(byte)0x60,(byte)0x41,(byte)0xAE,(byte)0x8F,(byte)0xEC,(byte)0xCD,(byte)0x2A,(byte)0x0B,(byte)0x68,(byte)0x49,
      (byte)0x97,(byte)0xB6,(byte)0xD5,(byte)0xF4,(byte)0x13,(byte)0x32,(byte)0x51,(byte)0x70,(byte)0x9F,(byte)0xBE,(byte)0xDD,(byte)0xFC,(byte)0x1B,(byte)0x3A,(byte)0x59,(byte)0x78,
      (byte)0x88,(byte)0xA9,(byte)0xCA,(byte)0xEB,(byte)0x0C,(byte)0x2D,(byte)0x4E,(byte)0x6F,(byte)0x80,(byte)0xA1,(byte)0xC2,(byte)0xE3,(byte)0x04,(byte)0x25,(byte)0x46,(byte)0x67,
      (byte)0xB9,(byte)0x98,(byte)0xFB,(byte)0xDA,(byte)0x3D,(byte)0x1C,(byte)0x7F,(byte)0x5E,(byte)0xB1,(byte)0x90,(byte)0xF3,(byte)0xD2,(byte)0x35,(byte)0x14,(byte)0x77,(byte)0x56,
      (byte)0xEA,(byte)0xCB,(byte)0xA8,(byte)0x89,(byte)0x6E,(byte)0x4F,(byte)0x2C,(byte)0x0D,(byte)0xE2,(byte)0xC3,(byte)0xA0,(byte)0x81,(byte)0x66,(byte)0x47,(byte)0x24,(byte)0x05,
      (byte)0xDB,(byte)0xFA,(byte)0x99,(byte)0xB8,(byte)0x5F,(byte)0x7E,(byte)0x1D,(byte)0x3C,(byte)0xD3,(byte)0xF2,(byte)0x91,(byte)0xB0,(byte)0x57,(byte)0x76,(byte)0x15,(byte)0x34,
      (byte)0x4C,(byte)0x6D,(byte)0x0E,(byte)0x2F,(byte)0xC8,(byte)0xE9,(byte)0x8A,(byte)0xAB,(byte)0x44,(byte)0x65,(byte)0x06,(byte)0x27,(byte)0xC0,(byte)0xE1,(byte)0x82,(byte)0xA3,
      (byte)0x7D,(byte)0x5C,(byte)0x3F,(byte)0x1E,(byte)0xF9,(byte)0xD8,(byte)0xBB,(byte)0x9A,(byte)0x75,(byte)0x54,(byte)0x37,(byte)0x16,(byte)0xF1,(byte)0xD0,(byte)0xB3,(byte)0x92,
      (byte)0x2E,(byte)0x0F,(byte)0x6C,(byte)0x4D,(byte)0xAA,(byte)0x8B,(byte)0xE8,(byte)0xC9,(byte)0x26,(byte)0x07,(byte)0x64,(byte)0x45,(byte)0xA2,(byte)0x83,(byte)0xE0,(byte)0xC1,
      (byte)0x1F,(byte)0x3E,(byte)0x5D,(byte)0x7C,(byte)0x9B,(byte)0xBA,(byte)0xD9,(byte)0xF8,(byte)0x17,(byte)0x36,(byte)0x55,(byte)0x74,(byte)0x93,(byte)0xB2,(byte)0xD1,(byte)0xF0
                  };
  private static int get_crc16_ccitt(byte[] data, int len) {
   int a =data[0] & 0x00ff;
   int b =data[1] & 0x00ff;
   int c =data[2] & 0x00ff;
   
   
   for(int i=2;i<len;i++){
    c =((la00[a]& 0x00ff) ^ c) ;
    a =((ha00[a]& 0x00ff) ^ b) ;  
    b =c;  
      if (i==len-1) break;
      c=(data[i+1] & 0x00ff);
   }
   
   
   return ((a & 0x00ff) << 8)|(b & 0x00ff) & 0xffff;
  }
  
  public static void main(String[] args) throws IOException {
 //String test="e0e00024333539333639303830343735363135000000000018a920190704155205";
   String test="CBCAFF191C345EBCA89F0000000000E0E00022333539333639303832343439363236FFFFFFFFFF81BB1300000012340000362120190704101912";
 
 
 byte[] buffer =DatatypeConverter.parseHexBinary(test);
     
    int crc16 = half_crc.get_crc16_ccitt(buffer,buffer.length);
    System.out.println(Integer.toHexString(crc16));
    
   }
  
  }
 
 
//*************
 
C#版:

static byte[] ha00 = {
              0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x81,0x91,0xA1,0xB1,0xC1,0xD1,0xE1,0xF1,
              0x12,0x02,0x32,0x22,0x52,0x42,0x72,0x62,0x93,0x83,0xB3,0xA3,0xD3,0xC3,0xF3,0xE3,
              0x24,0x34,0x04,0x14,0x64,0x74,0x44,0x54,0xA5,0xB5,0x85,0x95,0xE5,0xF5,0xC5,0xD5,
              0x36,0x26,0x16,0x06,0x76,0x66,0x56,0x46,0xB7,0xA7,0x97,0x87,0xF7,0xE7,0xD7,0xC7,
              0x48,0x58,0x68,0x78,0x08,0x18,0x28,0x38,0xC9,0xD9,0xE9,0xF9,0x89,0x99,0xA9,0xB9,
              0x5A,0x4A,0x7A,0x6A,0x1A,0x0A,0x3A,0x2A,0xDB,0xCB,0xFB,0xEB,0x9B,0x8B,0xBB,0xAB,
              0x6C,0x7C,0x4C,0x5C,0x2C,0x3C,0x0C,0x1C,0xED,0xFD,0xCD,0xDD,0xAD,0xBD,0x8D,0x9D,
              0x7E,0x6E,0x5E,0x4E,0x3E,0x2E,0x1E,0x0E,0xFF,0xEF,0xDF,0xCF,0xBF,0xAF,0x9F,0x8F,
              0x91,0x81,0xB1,0xA1,0xD1,0xC1,0xF1,0xE1,0x10,0x00,0x30,0x20,0x50,0x40,0x70,0x60,
              0x83,0x93,0xA3,0xB3,0xC3,0xD3,0xE3,0xF3,0x02,0x12,0x22,0x32,0x42,0x52,0x62,0x72,
              0xB5,0xA5,0x95,0x85,0xF5,0xE5,0xD5,0xC5,0x34,0x24,0x14,0x04,0x74,0x64,0x54,0x44,
              0xA7,0xB7,0x87,0x97,0xE7,0xF7,0xC7,0xD7,0x26,0x36,0x06,0x16,0x66,0x76,0x46,0x56,
              0xD9,0xC9,0xF9,0xE9,0x99,0x89,0xB9,0xA9,0x58,0x48,0x78,0x68,0x18,0x08,0x38,0x28,
              0xCB,0xDB,0xEB,0xFB,0x8B,0x9B,0xAB,0xBB,0x4A,0x5A,0x6A,0x7A,0x0A,0x1A,0x2A,0x3A,
              0xFD,0xED,0xDD,0xCD,0xBD,0xAD,0x9D,0x8D,0x7C,0x6C,0x5C,0x4C,0x3C,0x2C,0x1C,0x0C,
              0xEF,0xFF,0xCF,0xDF,0xAF,0xBF,0x8F,0x9F,0x6E,0x7E,0x4E,0x5E,0x2E,0x3E,0x0E,0x1E};
        static byte[] la00 = {
                  0x00,0x21,0x42,0x63,0x84,0xA5,0xC6,0xE7,0x08,0x29,0x4A,0x6B,0x8C,0xAD,0xCE,0xEF,
                  0x31,0x10,0x73,0x52,0xB5,0x94,0xF7,0xD6,0x39,0x18,0x7B,0x5A,0xBD,0x9C,0xFF,0xDE,
                  0x62,0x43,0x20,0x01,0xE6,0xC7,0xA4,0x85,0x6A,0x4B,0x28,0x09,0xEE,0xCF,0xAC,0x8D,
                  0x53,0x72,0x11,0x30,0xD7,0xF6,0x95,0xB4,0x5B,0x7A,0x19,0x38,0xDF,0xFE,0x9D,0xBC,
                  0xC4,0xE5,0x86,0xA7,0x40,0x61,0x02,0x23,0xCC,0xED,0x8E,0xAF,0x48,0x69,0x0A,0x2B,
                  0xF5,0xD4,0xB7,0x96,0x71,0x50,0x33,0x12,0xFD,0xDC,0xBF,0x9E,0x79,0x58,0x3B,0x1A,
                  0xA6,0x87,0xE4,0xC5,0x22,0x03,0x60,0x41,0xAE,0x8F,0xEC,0xCD,0x2A,0x0B,0x68,0x49,
                  0x97,0xB6,0xD5,0xF4,0x13,0x32,0x51,0x70,0x9F,0xBE,0xDD,0xFC,0x1B,0x3A,0x59,0x78,
                  0x88,0xA9,0xCA,0xEB,0x0C,0x2D,0x4E,0x6F,0x80,0xA1,0xC2,0xE3,0x04,0x25,0x46,0x67,
                  0xB9,0x98,0xFB,0xDA,0x3D,0x1C,0x7F,0x5E,0xB1,0x90,0xF3,0xD2,0x35,0x14,0x77,0x56,
                  0xEA,0xCB,0xA8,0x89,0x6E,0x4F,0x2C,0x0D,0xE2,0xC3,0xA0,0x81,0x66,0x47,0x24,0x05,
                  0xDB,0xFA,0x99,0xB8,0x5F,0x7E,0x1D,0x3C,0xD3,0xF2,0x91,0xB0,0x57,0x76,0x15,0x34,
                  0x4C,0x6D,0x0E,0x2F,0xC8,0xE9,0x8A,0xAB,0x44,0x65,0x06,0x27,0xC0,0xE1,0x82,0xA3,
                  0x7D,0x5C,0x3F,0x1E,0xF9,0xD8,0xBB,0x9A,0x75,0x54,0x37,0x16,0xF1,0xD0,0xB3,0x92,
                  0x2E,0x0F,0x6C,0x4D,0xAA,0x8B,0xE8,0xC9,0x26,0x07,0x64,0x45,0xA2,0x83,0xE0,0xC1,
                  0x1F,0x3E,0x5D,0x7C,0x9B,0xBA,0xD9,0xF8,0x17,0x36,0x55,0x74,0x93,0xB2,0xD1,0xF0
                  };

        private static int get_crc16_ccitt(byte[] data, int len)
        {
            int a = data[0] & 0x00ff;
            int b = data[1] & 0x00ff;
            int c = data[2] & 0x00ff;
            for (int i = 2; i < len; i++)
            {
                c = ((la00[a] & 0x00ff) ^ c);
                a = ((ha00[a] & 0x00ff) ^ b);
                b = c;
                if (i == len - 1) break;
                c = (data[i + 1] & 0x00ff);
            }
           
            return ((a & 0x00ff) << 8) | (b & 0x00ff) & 0xffff;
        }
 
//************
 
C++ 版:
const unsigned char ha00[256] ={
  0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x81,0x91,0xA1,0xB1,0xC1,0xD1,0xE1,0xF1,
  0x12,0x02,0x32,0x22,0x52,0x42,0x72,0x62,0x93,0x83,0xB3,0xA3,0xD3,0xC3,0xF3,0xE3,
  0x24,0x34,0x04,0x14,0x64,0x74,0x44,0x54,0xA5,0xB5,0x85,0x95,0xE5,0xF5,0xC5,0xD5,
  0x36,0x26,0x16,0x06,0x76,0x66,0x56,0x46,0xB7,0xA7,0x97,0x87,0xF7,0xE7,0xD7,0xC7,
  0x48,0x58,0x68,0x78,0x08,0x18,0x28,0x38,0xC9,0xD9,0xE9,0xF9,0x89,0x99,0xA9,0xB9,
  0x5A,0x4A,0x7A,0x6A,0x1A,0x0A,0x3A,0x2A,0xDB,0xCB,0xFB,0xEB,0x9B,0x8B,0xBB,0xAB,
  0x6C,0x7C,0x4C,0x5C,0x2C,0x3C,0x0C,0x1C,0xED,0xFD,0xCD,0xDD,0xAD,0xBD,0x8D,0x9D,
  0x7E,0x6E,0x5E,0x4E,0x3E,0x2E,0x1E,0x0E,0xFF,0xEF,0xDF,0xCF,0xBF,0xAF,0x9F,0x8F,
  0x91,0x81,0xB1,0xA1,0xD1,0xC1,0xF1,0xE1,0x10,0x00,0x30,0x20,0x50,0x40,0x70,0x60,
  0x83,0x93,0xA3,0xB3,0xC3,0xD3,0xE3,0xF3,0x02,0x12,0x22,0x32,0x42,0x52,0x62,0x72,
  0xB5,0xA5,0x95,0x85,0xF5,0xE5,0xD5,0xC5,0x34,0x24,0x14,0x04,0x74,0x64,0x54,0x44,
  0xA7,0xB7,0x87,0x97,0xE7,0xF7,0xC7,0xD7,0x26,0x36,0x06,0x16,0x66,0x76,0x46,0x56,
  0xD9,0xC9,0xF9,0xE9,0x99,0x89,0xB9,0xA9,0x58,0x48,0x78,0x68,0x18,0x08,0x38,0x28,
  0xCB,0xDB,0xEB,0xFB,0x8B,0x9B,0xAB,0xBB,0x4A,0x5A,0x6A,0x7A,0x0A,0x1A,0x2A,0x3A,
  0xFD,0xED,0xDD,0xCD,0xBD,0xAD,0x9D,0x8D,0x7C,0x6C,0x5C,0x4C,0x3C,0x2C,0x1C,0x0C,
  0xEF,0xFF,0xCF,0xDF,0xAF,0xBF,0x8F,0x9F,0x6E,0x7E,0x4E,0x5E,0x2E,0x3E,0x0E,0x1E
};
const unsigned char la00[256] ={
  0x00,0x21,0x42,0x63,0x84,0xA5,0xC6,0xE7,0x08,0x29,0x4A,0x6B,0x8C,0xAD,0xCE,0xEF,
  0x31,0x10,0x73,0x52,0xB5,0x94,0xF7,0xD6,0x39,0x18,0x7B,0x5A,0xBD,0x9C,0xFF,0xDE,
  0x62,0x43,0x20,0x01,0xE6,0xC7,0xA4,0x85,0x6A,0x4B,0x28,0x09,0xEE,0xCF,0xAC,0x8D,
  0x53,0x72,0x11,0x30,0xD7,0xF6,0x95,0xB4,0x5B,0x7A,0x19,0x38,0xDF,0xFE,0x9D,0xBC,
  0xC4,0xE5,0x86,0xA7,0x40,0x61,0x02,0x23,0xCC,0xED,0x8E,0xAF,0x48,0x69,0x0A,0x2B,
  0xF5,0xD4,0xB7,0x96,0x71,0x50,0x33,0x12,0xFD,0xDC,0xBF,0x9E,0x79,0x58,0x3B,0x1A,
  0xA6,0x87,0xE4,0xC5,0x22,0x03,0x60,0x41,0xAE,0x8F,0xEC,0xCD,0x2A,0x0B,0x68,0x49,
  0x97,0xB6,0xD5,0xF4,0x13,0x32,0x51,0x70,0x9F,0xBE,0xDD,0xFC,0x1B,0x3A,0x59,0x78,
  0x88,0xA9,0xCA,0xEB,0x0C,0x2D,0x4E,0x6F,0x80,0xA1,0xC2,0xE3,0x04,0x25,0x46,0x67,
  0xB9,0x98,0xFB,0xDA,0x3D,0x1C,0x7F,0x5E,0xB1,0x90,0xF3,0xD2,0x35,0x14,0x77,0x56,
  0xEA,0xCB,0xA8,0x89,0x6E,0x4F,0x2C,0x0D,0xE2,0xC3,0xA0,0x81,0x66,0x47,0x24,0x05,
  0xDB,0xFA,0x99,0xB8,0x5F,0x7E,0x1D,0x3C,0xD3,0xF2,0x91,0xB0,0x57,0x76,0x15,0x34,
  0x4C,0x6D,0x0E,0x2F,0xC8,0xE9,0x8A,0xAB,0x44,0x65,0x06,0x27,0xC0,0xE1,0x82,0xA3,
  0x7D,0x5C,0x3F,0x1E,0xF9,0xD8,0xBB,0x9A,0x75,0x54,0x37,0x16,0xF1,0xD0,0xB3,0x92,
  0x2E,0x0F,0x6C,0x4D,0xAA,0x8B,0xE8,0xC9,0x26,0x07,0x64,0x45,0xA2,0x83,0xE0,0xC1,
  0x1F,0x3E,0x5D,0x7C,0x9B,0xBA,0xD9,0xF8,0x17,0x36,0x55,0x74,0x93,0xB2,0xD1,0xF0
};

void CRC16_ccitt(unsigned char *a,unsigned char *b,unsigned char *c)
 {
  *c = la00[*a] ^ *c;
  *a = ha00[*a] ^ *b;
  *b = *c;
}
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/fenxiangboke/p/11650400.html