2011年11月9日 星期三

CRC、Checksum、VRC、LRC之比較

引用參考1
引用參考2
---

1.LRC是checksum用.應是針對(Data[]+ETX)作XOR的結果.

Data=Data[0];
for ( i=1; i < length; i++ ) Data = Data xor Data[i];
LRC=Data xor ETX;

2.在將 (header data if need)+ Data[]+ETX+LRC +(tail data if need) 送到前端設備.




CRC、Checksum、VRC、LRC之比較(1.使用bit數的多寡 2.作法上的使用 3.佔記憶空間 4.是否會誤判之排行榜)
CRC(循環冗餘檢查碼,Cyclic Redundancy Check),目前較常使用的位元數目有8、16或32,一般縮寫為CRC-8、CRC-16、CRC-32。根據理論統計,CRC-16可完全偵測資料區塊內單一或兩個位元的錯誤、奇數個位元的錯誤、連續16個位元或少於此數的錯誤,超過17個連續位元的錯誤偵測率則有99.9969%,其它位元長度的錯誤偵測率則可達99.9984%。XMODEM、Kermit等通訊協定,PC 的磁碟機、FDDI、乙太網路和「光纖通道」使用CRC驗證。
Checksum(總和檢查)使用的位元數沒有特別提到。Apple個人電腦的磁碟機是利用checksum驗證資料的正確性。
VRC(垂直冗餘檢查,Vertical Redundancy Check)是對每一個傳送字元(一般是8位元)都增加一個額外位元。
LRC(縱向冗餘檢查,Longitudinal Redundancy Check)也是對每一個傳送字元(一般是8位元)都增加一個額外位元。磁帶資料及透過通訊線路傳送的資料可用LRC驗證。
錯誤檢查所佔用的記憶體空間應與使用的位元數有正相關,誤判的機率應與使用的位元數有負相關,但是詳細的數字還是請您查看書籍與相關研究報告(不過對於VRC和LRC的討論及比較相當少)。

沒有留言:

張貼留言