zhubaomin
2024-12-02 5fcdef2e8eec55221bb65a7a2cf91a4be7cc89ac
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/CRC16.java
@@ -95,13 +95,13 @@
    * @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 ;
@@ -142,31 +142,14 @@
   }
   public static void main(String[] args) throws Exception {
      //String hex = "AA0024AA
      // 16015301
      // 15059980
      // 00011000
      // 00014A00
      // 5D4D5D4D
      // 00004000
      // AAC616" ;
      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)) ;
   }
}