<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子百科>電腦硬件>臺式機>

crc校驗原理_怎樣修復crc校驗錯誤

2012年09月05日 09:26 本站整理 作者:秩名 用戶評論(0

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校驗相關文章:

  CRC校驗原理及推導過程

  crc校驗方法及示例

非常好我支持^.^

(637) 40.1%

不好我反對

(952) 59.9%

( 發表人:姚遠香 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
      <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
      <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
      <acronym id="s8ci2"></acronym>
      <acronym id="s8ci2"><center id="s8ci2"></center></acronym>