几种常用的数据校验方式
我們知道數(shù)據(jù)在傳輸過程中,可能會存在數(shù)據(jù)出錯的情況。為了保證數(shù)據(jù)傳輸?shù)恼_性,因此會采取一些方法來判斷數(shù)據(jù)是否正確,或者在數(shù)據(jù)出錯的時候及時發(fā)現(xiàn)進行改正。常用的幾種數(shù)據(jù)校驗方式有奇偶校驗、CRC校驗、LRC校驗、格雷碼校驗、和校驗、異或校驗等。
一、奇偶校驗
1. 定義
根據(jù)被傳輸?shù)囊唤M二進制代碼中“1”的個數(shù)是奇數(shù)或偶數(shù)來進行校驗。
使用:通常專門設(shè)置一個奇偶校驗位,存放代碼中“1”的個數(shù)為奇數(shù)還是偶數(shù)。若用奇校驗,則奇偶校驗位為奇數(shù),表示數(shù)據(jù)正確。若用偶校驗,則奇偶校驗位為偶數(shù),表示數(shù)據(jù)正確。
2. 應(yīng)用
eg. ?數(shù)據(jù)位為 10001100 (1) ?-> 最后一位為校驗位
此時若約定好為奇校驗,那么數(shù)據(jù)表示為正確的,若為偶校驗,那么數(shù)據(jù)傳輸出錯了。
二、CRC校驗(循環(huán)冗余校驗碼)
1. 定義
CRC校驗是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進行多項式計算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。
2. 計算過程:?
a> 設(shè)置CRC寄存器,并給其賦值FFFF(hex)。?
b> 將數(shù)據(jù)的第一個8-bit字符與16位CRC寄存器的低8位進行異或,并把結(jié)果存入CRC寄存器。?
c> CRC寄存器向右移一位,MSB補零,移出并檢查LSB。?
d> 如果LSB為0,重復(fù)第三步;若LSB為1,CRC寄存器與多項式碼相異或。
e> 重復(fù)第3與第4步直到8次移位全部完成。此時一個8-bit數(shù)據(jù)處理完畢。
f> 重復(fù)第2至第5步直到所有數(shù)據(jù)全部處理完成。
g> 最終CRC寄存器的內(nèi)容即為CRC值。
常用的CRC循環(huán)冗余校驗標(biāo)準(zhǔn)多項式如下: ? CRC(16位) = X16+X15+X2+1 ? CRC(CCITT) = X16+X12 +X5+1?
CRC(32位) = X32+X26+X23+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1?
以CRC(16位)多項式為例,其對應(yīng)校驗二進制位列為1 1000 0000 0000 0101。?
3. 應(yīng)用:在發(fā)送端根據(jù)要傳送的k位二進制碼序列,以一定的規(guī)則產(chǎn)生一個校驗用的r位監(jiān)督碼(CRC碼),附在原始信息后邊,構(gòu)成一個新的二進制碼序列數(shù)共k+r位,然后發(fā)送出去。在接收端,根據(jù)信息碼和CRC碼之間所遵循的規(guī)則進行檢驗,以確定傳送中是否出錯。
三、LRC校驗
1. 定義:LRC校驗用于ModBus協(xié)定的ASCII模式,這各校驗比較簡單,通訊速率較慢,它在ASCII協(xié)議中使用,檢測了消息域中除開始的冒號及結(jié)束的回車換行號外的內(nèi)容。它僅僅是把每一個需要傳輸?shù)臄?shù)據(jù)字節(jié)迭加后取反加1即可。
2. 應(yīng)用
eg. 5個字節(jié):01H+03H+21H+02H+00H+02H = 29H,然后取2的補碼=D7H。
四、格雷碼校驗
1. 定義
格雷碼是一種無權(quán)碼,也是一種循環(huán)碼。是指任意兩組相鄰的代碼之間只有一位不同,其余為都相同。
如:5的二進制為0101 ? ?6的二進制為0110
? ? ? ? 5的格雷碼為0111 ? ?6的二進制為0101
五、校驗和
1. 定義
校驗一組數(shù)據(jù)項的和是否正確。通常是以十六進制為數(shù)制表示的形式。如果校驗和的數(shù)值超過十六進制的FF,也就是255。
2. 應(yīng)用
eg. 數(shù)據(jù)01020304的校驗和為a。
六、異或校驗
1. 定義
BCC校驗其實是奇偶校驗的一種,但也是經(jīng)常使用并且效率較高的一種。所謂BCC校驗法,就是在發(fā)送前和發(fā)送后分別把BCC以前包括ETX字符的所有字符按位異或后,按要求變換(增加或去除一個固定的值)后所得到的字符進行比較。相等即認(rèn)為通信無錯誤,不相等則認(rèn)為通信出錯。
七、MD5校驗
1. 定義
MD5的實際應(yīng)用是對一段Message(字節(jié)串)產(chǎn)生fingerprint(指紋),可以防止被篡改。
總結(jié)
以上是生活随笔為你收集整理的几种常用的数据校验方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。