@Component
public class Crc16Util {
/****************************************************************************************
函 数: CRC16_Checkout
描 述: CRC16 循环冗余校验算法。
参 数 一: *puchMsg:需要校验的字符串指针
参 数 二: usDataLen:要校验的字符串长度
返 回 值: 返回 CRC16 校验码
****************************************************************************************/
public int CRC16_Checkout(String message){
int crc_reg,check;
crc_reg = 0xFFFF;
for (int i = 0; i < message.length(); i++) {
crc_reg = (crc_reg>>8) ^ message.charAt(i);
for (int j = 0; j < 8; j++) {
check = crc_reg & 0x0001;
crc_reg >>= 1;
if(check==0x0001){
crc_reg ^= 0xA001;
}
}
}
return crc_reg;
}
/****************************************************************************************
函 数: intToHex
描 述: 十进制转换十六进制器
参 数 一: n 是十进制数
返 回 值: 返回十六进制数
****************************************************************************************/
public String intToHex(int n) {
//StringBuffer s = new StringBuffer();
StringBuilder sb = new StringBuilder(8);
String a;
char []b = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
while(n != 0){
sb = sb.append(b[n%16]);
n = n/16;
}
a = sb.reverse().toString();
return a;
}
}