Pu Zhibing
2025-03-07 297512bc22b179b7038d96a1ff033eceaed38c4b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.ruoyi.dataInterchange.util.jtt809.common;
 
/**
 * @author tucke
 */
public class CRC16CCITT {
 
    public static int crc16(byte[] bytes){
        int crc = 0xFFFF;
        for (byte aByte : bytes) {
            crc = ((crc >>> 8) | (crc << 8)) & 0xFFFF;
            // byte to int, trunc sign
            crc ^= (aByte & 0xFF);
            crc ^= ((crc & 0xFF) >> 4);
            crc ^= (crc << 12) & 0xFFFF;
            crc ^= ((crc & 0xFF) << 5) & 0xFFFF;
        }
        crc &= 0xFFFF;
        return crc;
    }
    
    
    public static void main(String[] args) {
        String hex = "000000480000096C1001010A66F801000100000000000000149A35394A484E7379313130312E3230362E3231312E3635000000000000000000000000000000000000000107";
        byte[] bytes = ByteArrayUtil.hexStr2Bytes(hex);
        int i = crc16(bytes);
        System.err.println(i);
    }
}