crc校驗原理_怎樣修復crc校驗錯誤
crc校驗原理
利用CRC進行檢錯的過程可簡單描述為:在發送端根據要傳送的k位二進制碼序列,以一定的規則產生一個校驗用的r位監督碼(CRC碼),附在原始信息后邊,構成一個新的二進制碼序列數共k+r位,然后發送出去。在接收端,根據信息碼和CRC碼之間所遵循的規則進行檢驗,以確定傳送中是否出錯。這個規則,在差錯控制理論中稱為“生成多項式”。
代數學的一般性算法
在代數編碼理論中,將一個碼組表示為一個多項式,碼組中各碼元當作多項式的系數。例如 1100101 表示為
1?x6+1?x5+0?x4+0?x3+1?x2+0?x+1,即 x6+x5+x2+1。
設編碼前的原始信息多項式為P(x),P(x)的最高冪次加1等于k;生成多項式為G(x),G(x)的最高冪次等于r;CRC多項式為R(x);編碼后的帶CRC的信息多項式為T(x)。
發送方編碼方法:將P(x)乘以xr(即對應的二進制碼序列左移r位),再除以G(x),所得余式即為R(x)。用公式表示為
T(x)=xrP(x)+R(x)
接收方解碼方法:將T(x)除以G(x),如果余數為0,則說明傳輸中無錯誤發生,否則說明傳輸有誤。(G(x)是變量,可根據用戶的需要自行設計,但好壞區別,一般位數與數據長度相等,首位和末位為1)
舉例來說,設信息碼為1100,生成多項式為1011,即P(x)=x3+x2,G(x)=x3+x+1,計算CRC的過程為
xrP(x) =x3(x3+x2) =x6+x5???? 左移三位
G(x) =x3+x+1 即 R(x)=x。
注意到G(x)最高冪次r=3,得出CRC為010。
如果用豎式除法,計算過程為(用異或計算)以G(x)為準,左移它的最高次位(r)再除以它本身求余可得可得一個的位的CRC碼
1100000/1011 =111000/1011 =10100/1011=010(校驗碼)
因此,T(x)=(x6+x5)+(x)=x6+x5+x, 即 1100000+010=1100010
如果傳輸無誤,T(x) x6+x5+x ------ = --------- = x3+x2+x, G(x) x3+x+1無余式?;仡^看一下上面的豎式除法,如果被除數是1100010,顯然在商第三個1時,就能除盡。
上述推算過程,有助于我們理解CRC的概念。但直接編程來實現上面的算法,不僅繁瑣,效率也不高。實際上在工程中不會直接這樣去計算和驗證CRC。
下表中列出了一些見于標準的CRC資料:
生成多項式的最高冪次項系數是固定的1,故在簡記式中,將最高的1統一去掉了,如04C11DB7實際上是104C11DB7。 ** 前稱CRC-CCITT。ITU的前身是CCITT。
備注:
(1)生成多項式是標準規定的
(2)CRC校驗碼是基于將位串看作是系數為0或1的多項式,一個k位的數據流可以看作是關于x的從k-1階到0階的k-1次多項式的系數序列。采用此編碼,發送方和接收方必須事先商定一個生成多項式G(x),其高位和低位必須是1。要計算m位的幀M(x)的校驗和,基本思想是將校驗和加在幀的末尾,使這個帶校驗和的幀的多項式能被G(x)除盡。當接收方收到加有校驗和的幀時,用G(x)去除它,如果有余數,則CRC校驗錯誤,只有沒有余數的校驗才是正確的。
CRC說了那么多實則是用一個規定的多項式(假設最高次是r,當然包含r+1位)把要發送的數據左移r位后,再去除那個多項式,當然會得到一個余數(設為r(x),)那么這個余數是r位的二進制數。最后把它填充到數據移出的空位上去,這樣變可以發送了,至于發送了幾位接收了幾位的細節問題自己考慮好了。
修復crc校驗錯誤
當我們在解壓RAR時,提示“CRC校驗失敗,文件被破壞”,那么這個時候我們要怎么處理呢,有沒有辦法可以解決,怎么修復crc校驗錯誤?下面看一下有什么方法。
辦法一:WinRAR本身就帶有壓縮包修復功能。點擊菜單“工具”下的“修復壓縮文件”即可,快捷鍵是“ALT+R”。此法可修復一部分壓縮包的常規錯誤,但是成功率不高。你可以試著連續修復幾次。WinRAR的這個功能對壓縮包里有很多文件且文件容量都比較小的情況比較適用。
辦法二: 打開壓縮包(不是解壓,而是用WinRAR打開),選中你要解壓縮的文件,單擊鼠標右鍵,在彈出的菜單里選擇“無需確認直接解壓縮”,快捷鍵是“ALT+W”。用此方法,不管是好的壓縮包還是壞的壓縮包,統統暢行無阻,成功率100%!
辦法三:釜底抽薪法!其原理就是讓RAR壓縮包內損壞的文件解壓縮出來,不理會WinRAR的警告,能解壓多少就解壓多少。解壓縮軟件還是用WinRAR,不過要做小小的設置。
在右鍵點擊解壓縮文件后跳出的窗口里,把“保留被損壞的文件”復選框選中,點擊確定開始解壓縮。不要理會解壓縮出錯的信息,解壓縮結束之后你會發現損壞的文件被解壓出來了。經過這樣解壓出來的損壞文件能正常使用的幾率還是非常高的。
以上幾點,可以使一些破損的文件得到恢復,但也不是百分之百有用的。但大部份還是可以用的。希望以上對大家能有所幫助。
CRC校驗相關文章:
非常好我支持^.^
(637) 40.1%
不好我反對
(952) 59.9%
相關閱讀:
- [電子說] 如何輕松修補不銹鋼水箱漏水,看完這兩個現場案例,你就了解了! 2023-10-24
- [電子說] iOS17.1可能明天發布,iOS17.1主要修復哪些問題? 2023-10-24
- [電子說] 直線導軌在噴涂行業中的應用場景 2023-10-18
- [電子說] 奇偶校驗和crc校驗的區別 CRC校驗和奇偶校驗之間有什么關系? 2023-10-17
- [電子說] 伺服電機兵法十三章,輕松拿下故障維修(二) 2023-10-13
- [變頻器] 如何快速修復變頻器故障? 2023-10-08
- [電子說] 水泥設備維修現場:破碎機軸磨損還可以這么修? 2023-10-07
- [電子說] 直線導軌壞了可以維修嗎? 2023-10-06
( 發表人:姚遠香 )