CRC校验java版

本文通过一个实际的设备数据对接案例,介绍了如何使用Java实现CRC16 Modbus校验,以确保数据的完整性。内容包括CRC校验的基本概念和CRC16 Modbus的高低字节交换过程。
摘要由CSDN通过智能技术生成

最近做一些设备数据对接,有些数据需要crc检验,验证数据完整性,基本概念快忘光了,写个小的实现复习下。

crc16 modbus生成CRC 的过程为: 

1. 将一个16位寄存器装入十六进制FFFF (全1). 将之称作CRC 寄存器. 
2. 将报文的第一个8位字节与16位CRC寄存器的低字节异或,结果置于CRC 寄存器. 
3. 将CRC 寄存器右移1位(向LSB 方向),MSB 充零. 提取并检测LSB. 
4. (如果LSB 为0): 重复步骤3 (另一次移位). 
(如果LSB 为1): 对CRC 寄存器异或多项式值 0xA001 (1010 0000 0000 0001). 
5. 重复步骤3 和4,直到完成8 次移位。当做完此操作后,将完成对8位字节的完整操作。
6. 对报文中的下一个字节重复步骤2 到5,继续此操作直至所有报文被处理完毕。
7. CRC 寄存器中的最终内容为CRC 值. 

8. 当放置CRC 值于报文时,如下面描述的那样,高低字节必须交换。


public class CRC {
	
	/*寄存器初始值*/
	private final int regInitValue;
	private int register;
    /*CRC 多项式 modbus 多项式0x8005*/ 
	private final int polynomial;
	
	public CRC() {
		this(0xffff, 0x8005);
	}
	
	pu
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值