1.奇偶校验
参考https://blog.youkuaiyun.com/u012923751/article/details/80352325
要发送的字节是0x1a,二进制表示为0001 1010。
- 采用奇校验,则在数据后补上个0,数据变为0001 1010 0,数据中1的个数为奇数个(3个)
- 采用偶校验,则在数据后补上个1,数据变为0001 1010 1,数据中1的个数为偶数个(4个)
接收方通过计算数据中1个数是否满足奇偶性来确定数据是否有错。
2.累加和校验
要传输的信息为: 6、23、4
加上校验和后的数据包:6、23、4、33
这里 33 为前三个字节的校验和。接收方收到全部数据后对前三个数据进行同样的累加计算,如果累加和与最后一个字节相同的话就认为传输的数据没有错误。
3.CRC 算法
基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。
还以上面例子中的数据为例:
6、23、4 可以看做一个2进制数: 0000011000010111 00000010
假如被除数选9,二进制表示为:1001
则除法运算可以表示为: