public class CRCModBus {
/**
* CRC ModBus算法返回2个字节
* @param data
* @return
*/
public static byte[] calculate(byte[] data) {
int crc = 0xFFFF; // 初始化为全1
for (byte b : data) {
crc ^= (b & 0xFF); // 异或操作
for (int i = 0; i < 8; i++) {
if ((crc & 0x0001) != 0) { // 最低位为1
crc >>= 1;
crc ^= 0xA001; // 在预设多项式下异或操作
} else {
crc >>= 1;
}
}
}
byte[] crcBytes = new byte[2];
crcBytes[0] = (byte) (crc & 0xFF);
crcBytes[1] = (byte) ((crc >> 8) & 0xFF);
return crcBytes;
}
}
CRC ModBus算法返回2个字节
最新推荐文章于 2024-07-19 15:45:46 发布