网上找了半天,刚开始也不太理解,后来到处看发现了,其实是LRC经常是与VRC一起使用,这样就会为每个字符校验码,在工业领域Modbus协议Ascii模式采用该算法。
计算方法是 每一位得出10进制的数,加起来然后取余256,然后取反加1
例子:
3A 30 31 30 36 30 30 30 35 30 30 30 35 45 46 0D 0A
3A 30 31 30 33 30 30 30 30 30 30 30 41 46 32 0D 0A
3A 30 35 30 33 30 30 46 46 30 30 30 31 30 30 30 34 46 34 0D 0A
第一个例子
第一位3A不理,然后最后四位去掉 45 46是校验位换算成字符串就是EF,0D 0A是换行回车不管
30 31 30 36 30 30 30 35 30 30 30 35 换算成数字就是010600050005,加起来是17也就是0x11,取反是0xEE,加一是0xEF,换算成ASCII就是45 46
第二个例子同理
30 31 30 33 30 30 30 30 30 30 30 41 换算成数字就是01030000000A,加起来就是14,也就是0x0E,取反是0xF1,加一是0xF2,换算成ASCII就是46 32
第三个例子
050300FF00010004,全部加起来取余之后就是F4
正常的LRC校验是ASCII的时候就全部异或,具体怎么算我也不太清楚,不过这个是一搜就能找到的