主页

索引

模块索引

搜索页面

简单数据校验

奇偶校验

所谓通讯过程的校验是指在通讯数据后加上一些附加信息,通过这些附加信息来判断接收到的数据是否和发送出的数据相同。比如说 RS232 串行通讯可以设置奇偶校验位,所谓奇偶校验就是在发送的每一个字节后都加上一位,使得每个字节中 1 的个数为奇数个或偶数个。

实例:

比如我们要发送的字节是 0x1a,二进制表示为 0001 1010。
1. 采用奇校验,则在数据后补上个 0,数据变为 0001 1010 0,数据中 1 的个数为奇数个(3 个)
2. 采用偶校验,则在数据后补上个 1,数据变为 0001 1010 1,数据中 1 的个数为偶数个(4 个)

奇偶校验的缺点也很明显,首先,它对错误的检测概率大约只有 50%。也就是只有一半的错误它能够检测出来。另外,每传输一个字节都要附加一位校验位,对传输效率的影响很大。因此,在高速数据通讯中很少采用奇偶校验。奇偶校验优点也很明显,它很简单,因此可以用硬件来实现,这样可以减少软件的负担。因此,奇偶校验也被广泛的应用着。

累加和校验(checksum)

所谓累加和校验实现方式有很多种,最常用的一种是在一次通讯数据包的最后加入一个字节的校验数据。这个字节内容为前面数据包中全部数据的忽略进位的按字节累加和。

实例:

我们要传输的信息为: 6、23、4
加上校验和后的数据包:6、23、4、33

累加和校验由于实现起来非常简单,也被广泛的采用。但是这种校验方式的检错能力也比较一般,对于单字节的校验和大概有 1/256 的概率将原本是错误的通讯数据误判为正确数据。

格式:

<original intact message> <checksum>

参考

主页

索引

模块索引

搜索页面