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);
|
}
|
}
|