您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>通信技術(shù)>數(shù)據(jù)通信>

crc校驗(yàn)失敗的解決辦法

2017年12月04日 09:13 網(wǎng)絡(luò)整理 作者: 用戶評(píng)論(0

  CRC校驗(yàn)碼是基于將位串看作是系數(shù)為0或1的多項(xiàng)式,一個(gè)k位的數(shù)據(jù)流可以看作是關(guān)于x的從k-1階到0階的k-1次多項(xiàng)式的系數(shù)序列。采用此編碼,發(fā)送方和接收方必須事先商定一個(gè)生成多項(xiàng)式G(x),其高位和低位必須是1。要計(jì)算m位的幀M(x)的校驗(yàn)和,基本思想是將校驗(yàn)和加在幀的末尾,使這個(gè)帶校驗(yàn)和的幀的多項(xiàng)式能被G(x)除盡。當(dāng)接收方收到加有校驗(yàn)和的幀時(shí),用G(x)去除它,如果有余數(shù),則CRC校驗(yàn)錯(cuò)誤,只有沒有余數(shù)的校驗(yàn)才是正確的。

  CRC校驗(yàn)

  對(duì)應(yīng)關(guān)系

  多項(xiàng)式和二進(jìn)制數(shù)有直接對(duì)應(yīng)關(guān)系:X的最高冪次對(duì)應(yīng)二進(jìn)制數(shù)的最高位,以下各位對(duì)應(yīng)多項(xiàng)式的各冪次,有此冪次項(xiàng)對(duì)應(yīng)1,無此冪次項(xiàng)對(duì)應(yīng)0。可以看出:X的最高冪次為R,轉(zhuǎn)換成對(duì)應(yīng)的二進(jìn)制數(shù)有R+1位。

  多項(xiàng)式包括生成多項(xiàng)式G(X)和信息多項(xiàng)式C(X)。

  如生成多項(xiàng)式為G(X)=X4+X3+X+1, 可轉(zhuǎn)換為二進(jìn)制數(shù)碼11011。

  而發(fā)送信息位 101111,可轉(zhuǎn)換為數(shù)據(jù)多項(xiàng)式為C(X)=X5+X3+X2+X+1。

  生成多項(xiàng)式

  是接受方和發(fā)送方的一個(gè)約定,也就是一個(gè)二進(jìn)制數(shù),在整個(gè)傳輸過程中,這個(gè)數(shù)始終保持不變。

  在發(fā)送方,利用生成多項(xiàng)式對(duì)信息多項(xiàng)式做模2除生成校驗(yàn)碼。在接收方利用生成多項(xiàng)式對(duì)收到的編碼多項(xiàng)式做模2除檢測(cè)和確定錯(cuò)誤位置。

  crc校驗(yàn)失敗的解決辦法

  應(yīng)滿足以下條件:

  A、生成多項(xiàng)式的最高位和最低位必須為1。

  B、當(dāng)被傳送信息(CRC碼)任何一位發(fā)生錯(cuò)誤時(shí),被生成多項(xiàng)式做除后應(yīng)該使余數(shù)不為0。

  C、不同位發(fā)生錯(cuò)誤時(shí),應(yīng)該使余數(shù)不同。

  D、對(duì)余數(shù)繼續(xù)做除,應(yīng)使余數(shù)循環(huán)。

  校驗(yàn)碼位數(shù)

  CRC校驗(yàn)碼位數(shù) = 生成多項(xiàng)式位數(shù) - 1。注意有些生成多項(xiàng)式的簡記式中將生成多項(xiàng)式的最高位1省略了。

  生成步驟

  1、將X的最高次冪為R的生成多項(xiàng)式G(X)轉(zhuǎn)換成對(duì)應(yīng)的R+1位二進(jìn)制數(shù)。

  2、將信息碼左移R位,相當(dāng)于對(duì)應(yīng)的信息多項(xiàng)式C(X)*2R。

  3、用生成多項(xiàng)式(二進(jìn)制數(shù))對(duì)信息碼做除,得到R位的余數(shù)(注意:這里的二進(jìn)制做除法得到的余數(shù)其實(shí)是模2除法得到的余數(shù),并不等于其對(duì)應(yīng)十進(jìn)制數(shù)做除法得到的余數(shù)。)。

  4、將余數(shù)拼到信息碼左移后空出的位置,得到完整的CRC碼。

  CRC校驗(yàn)錯(cuò)誤的解決方法

  辦法一:

  WinRAR本身就帶有壓縮包修復(fù)功能。雙擊打開要解壓的winrar壓縮包文件,點(diǎn)擊菜單“工具”下的“修復(fù)壓縮文件”即可,快捷鍵是“ALT+R”。此法可修復(fù)一部分壓縮包的常規(guī)錯(cuò)誤,但是成功率不高。你可以試著連續(xù)修復(fù)幾次。WinRAR的這個(gè)功能對(duì)壓縮包里有很多文件且文件容量都比較小的情況比較適用。

  辦法二:

  雙擊打開要解壓的winrar壓縮包文件(不是解壓,而是用WinRAR打開),選中你要解壓縮的文件,單擊鼠標(biāo)右鍵,在彈出的菜單里選擇“無需確認(rèn)直接解壓縮”,快捷鍵是“ALT+W”。用此方法,不管是好的壓縮包還是壞的壓縮包,統(tǒng)統(tǒng)暢行無阻,成功率100%!

  辦法三:釜底抽薪法!

  其原理就是讓RAR壓縮包內(nèi)損壞的文件解壓縮出來,不理會(huì)WinRAR的警告,能解壓多少就解壓多少。解壓縮軟件還是用WinRAR,不過要做小小的設(shè)置,鼠標(biāo)右鍵點(diǎn)擊要解壓縮的文件包,依次選擇:winrar - 解壓文件(A) ,在解壓路徑和選項(xiàng)卡中勾選“保留損壞的文件”復(fù)選框,點(diǎn)擊確定開始解壓縮。不要理會(huì)解壓縮出錯(cuò)的信息,解壓縮結(jié)束之后你會(huì)發(fā)現(xiàn)損壞的文件被解壓出來了。經(jīng)過這樣解壓出來的損壞文件能正常使用的幾率還是非常高的。

  預(yù)防工作很重要:

  其實(shí)RAR壓縮包出錯(cuò)的解決方法主要是以預(yù)防為主!如果沒有預(yù)防,等到真正出了問題,技術(shù)上也是沒辦法完美解決的!像循環(huán)冗余校驗(yàn)碼(CRC)出錯(cuò)這種情況,如果RAR壓縮包不包含恢復(fù)記錄的話,用戶自己想要修復(fù)CRC是不可能的!本文的主要目的是想告訴大家一些出錯(cuò)的原因以及討論一些從根本上預(yù)防出錯(cuò)和把損失減少到最小的辦法而已! 預(yù)防措施:

1.做好恢復(fù)記錄

  原始RAR壓縮包在壓縮時(shí),如果選擇放置恢復(fù)記錄,這樣用戶下載后即使CRC出錯(cuò)也有自己修復(fù)的機(jī)會(huì)!

2.采取分卷壓縮

  采取分卷壓縮的方法便可較大地減少因?yàn)槌霈F(xiàn)不可恢復(fù)的錯(cuò)誤帶來的損失。

3.老文件也加恢復(fù)記錄

  有人也許會(huì)問,新壓縮的RAR壓縮包可以加入恢復(fù)記錄,那么已經(jīng)壓縮過的RAR包有沒有辦法也加上恢復(fù)記錄呢?給已經(jīng)壓縮好的RAR壓縮包加上恢復(fù)紀(jì)錄是有辦法的,只需要打開壓縮包,在“命令”菜單中選擇“保護(hù)壓縮文件防止損害”即可。 在“資源管理器”中右擊一個(gè)文件,選擇Winrar→“添加到壓縮文件”后,在打開的“壓縮文件名和參數(shù)”窗口中選中“添加恢復(fù)記錄”復(fù)選框,再單擊“高級(jí)”標(biāo)簽,在這里即可設(shè)置以壓縮文件總大小為準(zhǔn)的百分比,其最大允許值為10%。較大的恢復(fù)記錄允許連續(xù)損壞時(shí)更多的恢復(fù)可能,但同時(shí)也增加了壓縮文件的大小,因此1~3%是較為合適的數(shù)值(目前國際上通用的設(shè)置為3%)。最后單擊“確定”按鈕壓縮所選文件。

  這樣壓縮出來的壓縮包就帶有了CRC32校驗(yàn)信息,一旦在解壓過程中出現(xiàn)“CRC校驗(yàn)失敗,文件被破壞”的提示,我們便可以通過點(diǎn)擊winrar軟件工具欄里的修復(fù)工具按鈕來修復(fù)文件。

非常好我支持^.^

(3) 3.8%

不好我反對(duì)

(77) 96.2%

( 發(fā)表人:龔婷 )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?