LRC校验小知识
纵向冗余校验(Longitudinal Redundancy Check,简称:LRC)是通信中常用的一种校验形式,也称LRC校验或纵向校验。它是一种从纵向通道上的特定比特串产生校验比特的错误检测方法。在行列格式中(如磁带),LRC经常是与VRC一起使用,这样就会为每个字符校验码。在工业领域Modbus协议Ascii模式采用该算法。
下面是两个手动的计算方法:
第一种计算方式
转成ASC码后,例如
字符串 ASC 16进制
4 => 34 => 0011 0100
5 => 35 => 0011 0100
6 => 36 => 0011 0100
=============================
1001 1111 = 9F
=========================
9F%100=9F 100-9F = 61
456这个字符串的LRC码就为61
第二种计算方式
字符串 ASC 10进制
4 => 34 => 52
5 => 35 => 53
6 => 36 => 54
=============================
52+53+54 = 159
===========================
159%256=159 256-159 = 97
97===16进制之后=====61
下面是代码部分:
/*
*kongchujun 2017/6/10
* */
function getLrc(str){
var length = str.length;
var b = 0;
for(var i = 0; i<length;i++){
b += str.charCodeAt(i);
}
return (256 - (b%256)).toString(16);
}