|  |  | 
 |  |  |     * @return CRC | 
 |  |  |     */ | 
 |  |  |    @SuppressWarnings("unused") | 
 |  |  |    public short CRC16_table(byte[] bs, int startIndex, int endIndex) { | 
 |  |  |       short x ; | 
 |  |  |       short crc = (short)0xffff; | 
 |  |  |    public int CRC16_table(byte[] bs, int startIndex, int endIndex) { | 
 |  |  |       int x ; | 
 |  |  |       int crc = 0xffff; | 
 |  |  |       if(bs != null && bs.length >= endIndex + 1){ | 
 |  |  |          for (int i = startIndex ; i <= endIndex; i++){ | 
 |  |  |             x = (short)(crc ^ bs[i]) ; | 
 |  |  |             crc = (short)((crc >> 8) ^ crc16_rev_table[x & 0x00FF]) ; | 
 |  |  |             x =  (crc ^ bs[i]) ; | 
 |  |  |             crc =  ((crc >> 8) ^ crc16_rev_table[x & 0x00FF]) ; | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return crc ; | 
 |  |  | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    public static void main(String[] args) throws Exception { | 
 |  |  |       //String hex = "AA0024AA | 
 |  |  |       // 16015301 | 
 |  |  |       // 15059980 | 
 |  |  |       // 00011000 | 
 |  |  |       // 00014A00 | 
 |  |  |       // 5D4D5D4D | 
 |  |  |       // 00004000 | 
 |  |  |       // AAC616" ; | 
 |  |  |       String hex = "AA0024AA16015301150599800001100000014A005D4D5D4D00004000" ; | 
 |  |  |       int s = 62430 ; | 
 |  |  |       //String hex = "AA0018AA16015301150599800001100000014A005D4D5D4D00004000AA7E16" ; | 
 |  |  |       String hex = "AA0018AA16015301150599800001100000014A005D4D5D4D00004000" ; | 
 |  |  |       byte[] bs = ByteUtil.hex2Bytes(hex) ; | 
 |  |  | //      for(int i = 0 ; i < bs.length - 2 ; i++){ | 
 |  |  | //         short crc = new CRC16().CRC16_table(bs, i , bs.length - 1) ; | 
 |  |  | //         byte[] bytes = new byte[ProtocolConstantV206V1.UG_lenTail] ; | 
 |  |  | //         ByteUtil.short2Bytes_LE(bytes, crc, 0); | 
 |  |  | //         bytes[2] = ProtocolConstantV206V1.P_Tail_Byte ; | 
 |  |  | //         System.out.println(ByteUtil.bytes2Hex(bytes, true)) ; | 
 |  |  | //      } | 
 |  |  |       System.out.println("==============================") ; | 
 |  |  |       for(int i = 4 ; i < bs.length ; i++){ | 
 |  |  |          short crc = new CRC16().CRC16_table(bs, 0 , i) ; | 
 |  |  |          byte[] bytes = new byte[ProtocolConstantV206V1.UG_lenTail] ; | 
 |  |  |          ByteUtil.short2Bytes_LE(bytes, crc, 0); | 
 |  |  |          bytes[2] = ProtocolConstantV206V1.P_Tail_Byte ; | 
 |  |  |          System.out.println(ByteUtil.bytes2Hex(bytes, true)) ; | 
 |  |  |       } | 
 |  |  |       int crc = new CRC16().CRC16_table(bs, 0 , bs.length - 1) ; | 
 |  |  |       byte[] crcBs = new byte[4] ; | 
 |  |  |       ByteUtil.int2Bytes_BE(crcBs, crc, 0); | 
 |  |  |       System.out.println(ByteUtil.bytes2Hex(crcBs, true)) ; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | } |