CheckSum算法思想

    CheckSum生成:将发送数据逐个累加,再对累加和取反,该值即为CheckSum校验码。取反的方式在C语言中可以使用按位取反“~”来实现,再Vb.net上可以吃用与0xFF异或(XOR)的方式得到。
    CheckSum校验:将接收到的数据与校验码连续累加,将结果取反,若取反后的值为0,则表示校验正确,数据有效;否则,校验错误,数据无效。
    如:带传送的数据串为:0x01,0x12,0x55,0xF0,则该校验码为以上累加,累加值等于0x158,在一个字节中对256取模,结果为 0x58,所以校验码为0x58 ^ 0xFF =  0xA7 。在接收端,如果数据接受正确,则 传送数据 + 校验值 = 0x58 + 0xA7 = 0xFF,因此对该值取反的结果为0,因此校验正确。

    CheckSum校验算法相较于CRC校验算法,实现起来更简单,但出现数据碰撞的概率更高,上面举例校验字节是单字节,当校验字节越多,出现数据重叠的机会就越少,因为溢出的机会少。但是因为原理上只是累加和,所以不像CRC那样,是逐位判断,根据0/1做移位(异或)操作。在数据波特率比较低,要求不是很严格的时候,可以选用校验和的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值