一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

您的位置:電子發(fā)燒友網(wǎng)>電子百科>電腦硬件>臺(tái)式機(jī)>

crc校驗(yàn)原理_怎樣修復(fù)crc校驗(yàn)錯(cuò)誤

2012年09月05日 09:26 本站整理 作者:秩名 用戶(hù)評(píng)論(0

crc校驗(yàn)原理
利用CRC進(jìn)行檢錯(cuò)的過(guò)程可簡(jiǎn)單描述為:在發(fā)送端根據(jù)要傳送的k位二進(jìn)制碼序列,以一定的規(guī)則產(chǎn)生一個(gè)校驗(yàn)用的r位監(jiān)督碼(CRC碼),附在原始信息后邊,構(gòu)成一個(gè)新的二進(jìn)制碼序列數(shù)共k+r位,然后發(fā)送出去。在接收端,根據(jù)信息碼和CRC碼之間所遵循的規(guī)則進(jìn)行檢驗(yàn),以確定傳送中是否出錯(cuò)。這個(gè)規(guī)則,在差錯(cuò)控制理論中稱(chēng)為“生成多項(xiàng)式”。
代數(shù)學(xué)的一般性算法
在代數(shù)編碼理論中,將一個(gè)碼組表示為一個(gè)多項(xiàng)式,碼組中各碼元當(dāng)作多項(xiàng)式的系數(shù)。例如 1100101 表示為
1?x6+1?x5+0?x4+0?x3+1?x2+0?x+1,即 x6+x5+x2+1。
設(shè)編碼前的原始信息多項(xiàng)式為P(x),P(x)的最高冪次加1等于k;生成多項(xiàng)式為G(x),G(x)的最高冪次等于r;CRC多項(xiàng)式為R(x);編碼后的帶CRC的信息多項(xiàng)式為T(mén)(x)。
發(fā)送方編碼方法:將P(x)乘以xr(即對(duì)應(yīng)的二進(jìn)制碼序列左移r位),再除以G(x),所得余式即為R(x)。用公式表示為
T(x)=xrP(x)+R(x)
接收方解碼方法:將T(x)除以G(x),如果余數(shù)為0,則說(shuō)明傳輸中無(wú)錯(cuò)誤發(fā)生,否則說(shuō)明傳輸有誤。(G(x)是變量,可根據(jù)用戶(hù)的需要自行設(shè)計(jì),但好壞區(qū)別,一般位數(shù)與數(shù)據(jù)長(zhǎng)度相等,首位和末位為1)
舉例來(lái)說(shuō),設(shè)信息碼為1100,生成多項(xiàng)式為1011,即P(x)=x3+x2,G(x)=x3+x+1,計(jì)算CRC的過(guò)程為
xrP(x) =x3(x3+x2) =x6+x5???? 左移三位
G(x) =x3+x+1 即 R(x)=x。
注意到G(x)最高冪次r=3,得出CRC為010。
如果用豎式除法,計(jì)算過(guò)程為(用異或計(jì)算)以G(x)為準(zhǔn),左移它的最高次位(r)再除以它本身求余可得可得一個(gè)的位的CRC碼
1100000/1011 =111000/1011 =10100/1011=010(校驗(yàn)碼)
因此,T(x)=(x6+x5)+(x)=x6+x5+x, 即 1100000+010=1100010
如果傳輸無(wú)誤,T(x) x6+x5+x ------ = --------- = x3+x2+x, G(x) x3+x+1無(wú)余式?;仡^看一下上面的豎式除法,如果被除數(shù)是1100010,顯然在商第三個(gè)1時(shí),就能除盡。
上述推算過(guò)程,有助于我們理解CRC的概念。但直接編程來(lái)實(shí)現(xiàn)上面的算法,不僅繁瑣,效率也不高。實(shí)際上在工程中不會(huì)直接這樣去計(jì)算和驗(yàn)證CRC。
下表中列出了一些見(jiàn)于標(biāo)準(zhǔn)的CRC資料:

生成多項(xiàng)式的最高冪次項(xiàng)系數(shù)是固定的1,故在簡(jiǎn)記式中,將最高的1統(tǒng)一去掉了,如04C11DB7實(shí)際上是104C11DB7。 ** 前稱(chēng)CRC-CCITT。ITU的前身是CCITT。
備注:
(1)生成多項(xiàng)式是標(biāo)準(zhǔn)規(guī)定的
(2)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ò)誤,只有沒(méi)有余數(shù)的校驗(yàn)才是正確的。
CRC說(shuō)了那么多實(shí)則是用一個(gè)規(guī)定的多項(xiàng)式(假設(shè)最高次是r,當(dāng)然包含r+1位)把要發(fā)送的數(shù)據(jù)左移r位后,再去除那個(gè)多項(xiàng)式,當(dāng)然會(huì)得到一個(gè)余數(shù)(設(shè)為r(x),)那么這個(gè)余數(shù)是r位的二進(jìn)制數(shù)。最后把它填充到數(shù)據(jù)移出的空位上去,這樣變可以發(fā)送了,至于發(fā)送了幾位接收了幾位的細(xì)節(jié)問(wèn)題自己考慮好了。

修復(fù)crc校驗(yàn)錯(cuò)誤
當(dāng)我們?cè)诮鈮篟AR時(shí),提示“CRC校驗(yàn)失敗,文件被破壞”,那么這個(gè)時(shí)候我們要怎么處理呢,有沒(méi)有辦法可以解決,怎么修復(fù)crc校驗(yàn)錯(cuò)誤?下面看一下有什么方法。
辦法一:WinRAR本身就帶有壓縮包修復(fù)功能。點(diǎn)擊菜單“工具”下的“修復(fù)壓縮文件”即可,快捷鍵是“ALT+R”。此法可修復(fù)一部分壓縮包的常規(guī)錯(cuò)誤,但是成功率不高。你可以試著連續(xù)修復(fù)幾次。WinRAR的這個(gè)功能對(duì)壓縮包里有很多文件且文件容量都比較小的情況比較適用。
辦法二: 打開(kāi)壓縮包(不是解壓,而是用WinRAR打開(kāi)),選中你要解壓縮的文件,單擊鼠標(biāo)右鍵,在彈出的菜單里選擇“無(wú)需確認(rèn)直接解壓縮”,快捷鍵是“ALT+W”。用此方法,不管是好的壓縮包還是壞的壓縮包,統(tǒng)統(tǒng)暢行無(wú)阻,成功率100%!
辦法三:釜底抽薪法!其原理就是讓RAR壓縮包內(nèi)損壞的文件解壓縮出來(lái),不理會(huì)WinRAR的警告,能解壓多少就解壓多少。解壓縮軟件還是用WinRAR,不過(guò)要做小小的設(shè)置。

在右鍵點(diǎn)擊解壓縮文件后跳出的窗口里,把“保留被損壞的文件”復(fù)選框選中,點(diǎn)擊確定開(kāi)始解壓縮。不要理會(huì)解壓縮出錯(cuò)的信息,解壓縮結(jié)束之后你會(huì)發(fā)現(xiàn)損壞的文件被解壓出來(lái)了。經(jīng)過(guò)這樣解壓出來(lái)的損壞文件能正常使用的幾率還是非常高的。
以上幾點(diǎn),可以使一些破損的文件得到恢復(fù),但也不是百分之百有用的。但大部份還是可以用的。希望以上對(duì)大家能有所幫助。

  CRC校驗(yàn)相關(guān)文章:

  CRC校驗(yàn)原理及推導(dǎo)過(guò)程

  crc校驗(yàn)方法及示例

非常好我支持^.^

(637) 40.1%

不好我反對(duì)

(952) 59.9%

( 發(fā)表人:姚遠(yuǎn)香 )

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

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

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

      ?