JAVA CRC-16(CRC-16/IBM)计算校验值
前言:对接硬件设备的通信协议需要用到CRC-16进行计算校验值,然后再网上找了很多个版本,很久都没找到这个版本的,然后好不容易找到了,就记录一下
注意:
这个是CRC-16(CRC-16/IBM)的版本,不是CRC-16/MODBUS或其他版本,如果想要其他版本可以另外搜索
代码如下:
public class CRC16Utils {
/**
* CRC-16 校验
* 低位在前高位在后
* @param data
* @return
*/
public static byte[] getCRCBytes(byte[] data) {
int crc = 0x0000;
for (byte b : data) {
crc = (crc >>> 8) ^ table[(crc ^ b) & 0xff];
}
return new byte[] { (byte) (0xff & crc), (byte) ((0xff00 & crc) >> 8) };
}
private static final int[] table = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741,
0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40,
0xC901, 0x09C0, 0x0880, 0xC841, 0x

本文介绍了如何使用JAVA实现CRC-16(CRC-16/IBM)计算通信协议的校验值。内容包括CRC-16/IBM版本的特殊性以及提供的代码示例,建议使用在线CRC校验工具进行验证。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



