校验字节等于命令字节与所有数据字节之和的反码

校验字节等于命令字节与所有数据字节之和的反码。求和按带进位加 (ADDC)方式计算,每个进位都被加到本次结果的最低位(LSB)。

举例:如命令字节=0x01;

数据=0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF,0x00,0x01;则校验字节0x01+0xF0+0xF1+0xF2+0xF3+0xF4+0xF5+0xF6+0xF7+0xF8+0xF9+0xFA

+0xFB+0xFC+0xFD+0xFE+0xFF+0x00+0x01 = 0x0F79;

0x0F+0x79 = 0x88;

校验字节 = 0xFF – 0x88 = 0x77。

JS方法:

getAddc(str) {
		let itotal = 0,
			len = str.length,
			num = 0;
		var tempTotal = "";
		while (num < len) {
			let s = str.substring(num, num + 2);
			itotal += parseInt(s, 16);
			num = num + 2;
			if (itotal >= 256) {
				itotal = parseInt((itotal - itotal % 256) / 256) + itotal % 256
			}
		}
		itotal = 255 - itotal
		return itotal.toString(16).padStart(2, '0')
	}

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值