package com.hhzh.utils;
public class CRC16_MODBUS {
/**
* CRC-16 (Modbus)
* CRC16_MODBUS:多项式x16+x15+x2+1(0x8005),初始值0xFFFF,低位在前,高位在后,结果与0x0000异或
* 0xA001是0x8005按位颠倒后的结果
*
* @param buffer
* @return
*/
public static int CRC16_MODBUS(byte[] buffer) {
int wCRCin = 0xffff;
int POLYNOMIAL = 0xa001;
for (byte b : buffer) {
wCRCin ^= ((int) b & 0x00ff);
for (int j = 0; j < 8; j++) {
if ((wCRCin & 0x0001) != 0) {
wCRCin >>= 1;
wCRCin ^= POLYNOMIAL;
} else {
wCRCin >>= 1;
}
}
}
return wCRCin ^= 0x0000;
}
public static String CRC16_MODBUS_HEX(String str){
byte[] buffer =hexToByteArray(s
CRC16_MODBUS
最新推荐文章于 2024-10-04 15:04:01 发布
本文详细介绍了CRC16_MODBUS校验算法的工作原理,并提供了一段使用Java实现该算法的代码示例,帮助读者理解如何在实际项目中应用CRC16_MODBUS进行数据完整性校验。
摘要由CSDN通过智能技术生成