crc校驗(yàn)失敗的解決辦法
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ò)誤位置。
應(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%
相關(guān)閱讀:
- [電子說] 如何使用腳本完成CRC和填充值的自動(dòng)完成 2023-10-21
- [電子說] 奇偶校驗(yàn)和crc校驗(yàn)的區(qū)別 CRC校驗(yàn)和奇偶校驗(yàn)之間有什么關(guān)系? 2023-10-17
- [電子說] 什么是奇校驗(yàn)和偶校驗(yàn)?常見的奇偶校驗(yàn)方式有哪些? 2023-10-17
- [電子說] IPv6地址如何劃分?這篇文章看完必懂! 2023-10-17
- [電子說] 開放二進(jìn)制翻譯聯(lián)盟,推動(dòng)RISC-V實(shí)現(xiàn)跨架構(gòu)應(yīng)用運(yùn)行 2023-10-17
- [電子說] N32G45x硬件CRC計(jì)算Modbus的CRC16 2023-10-16
- [電子說] 簡單歸納USB設(shè)備開發(fā)必備的基礎(chǔ)知識(shí) 2023-10-16
- [電子說] SEM IP多種工作模式的區(qū)別和選擇指導(dǎo) 2023-10-13
( 發(fā)表人:龔婷 )