![CRC16校驗算法實現(xiàn)5頁_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f1.gif)
![CRC16校驗算法實現(xiàn)5頁_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f2.gif)
![CRC16校驗算法實現(xiàn)5頁_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f3.gif)
![CRC16校驗算法實現(xiàn)5頁_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f4.gif)
![CRC16校驗算法實現(xiàn)5頁_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-8/20/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f/c5f2f5c9-af10-41b8-8f1c-dc4a44e6d76f5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、CRC16校驗算法實現(xiàn)(轉(zhuǎn))循環(huán)冗余碼校驗英文名稱為Cyclical Redundancy Check,簡稱CRC。它是利用除法及余數(shù)的原理來作錯誤偵測(Error Detecting)的。實際應用時,發(fā)送裝置計算出CRC值并隨數(shù)據(jù)一同發(fā)送給接收裝置,接收裝置對收到的數(shù)據(jù)重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數(shù)據(jù)通訊出現(xiàn)錯誤。根據(jù)應用環(huán)境與習慣的不同,CRC又可分為以下幾種標準:CRC-12碼;CRC-16碼;CRC-CCITT碼;CRC-32碼。CRC-12碼通常用來傳送6-bit字符串。CRC-16及CRC-CCITT碼則用是來傳送8-bit字符,其中CRC-16
2、為美國采用,而CRC-CCITT為歐洲國家所采用。CRC-32碼大都被采用在一種稱為Point-to-Point的同步傳輸中。下面著重是CRC-16檢驗碼的生成過程。CRC-16碼由兩個字節(jié)構成,在開始時CRC寄存器的每一位都預置為1,然后把CRC寄存器與8-bit的數(shù)據(jù)進行異或,之后對CRC寄存器從高到低進行移位,在最高位(MSB)的位置補零,而最低位(LSB,移位后已經(jīng)被移出CRC寄存器)如果為1,則把寄存器與預定義的多項式碼進行異或,否則如果 LSB為零,則無需進行異或。重復上述的由高至低的移位8次,第一個8-bit數(shù)據(jù)處理完畢,用此時CRC寄存器的值與下一個8-bit數(shù)據(jù)異或并進行如前
3、一個數(shù)據(jù)似的8次移位。所有的字符處理完成后CRC寄存器內(nèi)的值即為最終的CRC值。下面為CRC16的計算過程,其中生成多項式為:X16+X15+X2+1:1設置CRC寄存器,并給其賦值FFFF(hex)。2將數(shù)據(jù)的第一個8-bit字符與16位CRC寄存器的低8位進行異或,并把結果存入CRC寄存器。3CRC寄存器向右移一位,MSB補零,移出并檢查LSB。4如果LSB為0,重復第三步;若LSB為1,CRC寄存器與生成多項式碼相異或。5重復第3與第4步直到8次移位全部完成。此時一個8-bit數(shù)據(jù)處理完畢。6重復第2至第5步直到所有數(shù)據(jù)全部處理完成。7最終CRC寄存器的內(nèi)容即為CRC值。校驗碼實現(xiàn)編寫C
4、RC校驗程序有兩種辦法:一種為計算法,一種為查表法。下面是查表法的C語言實現(xiàn):校驗碼算法程序?qū)崿F(xiàn)樣例(C語言):/ Test.cpp : Defines the entry point for the console application.#include stdafx.hstatic unsigned char auchCRCHi=0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0
5、x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00,
6、0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40,
7、 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81
8、, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC
9、0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40;static unsigned char auchCRCLo=0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,0x07, 0xC7, 0x05, 0xC5, 0xC4, 0
10、x04, 0xCC, 0x0C, 0x0D, 0xCD,0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30,
11、0x31, 0xF1, 0x33, 0xF3,0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27,
12、 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA
13、, 0xBE, 0x7E,0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9
14、B, 0x5B,0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,0x43, 0x83, 0x41, 0x81, 0x80, 0x40;unsigned short CRC16(unsigned char* puchMsg, unsigned short usDataLen)unsigned c
15、har uchCRCHi = 0xFF ;unsigned char uchCRCLo = 0xFF ;unsigned char uIndex ;while (usDataLen-)uIndex = uchCRCHi *puchMsg+;uchCRCHi = uchCRCLo auchCRCHiuIndex;uchCRCLo = auchCRCLouIndex;return (uchCRCHi 8 | uchCRCLo) ;void main(int argc, char* argv)unsigned char src21=1,2,3,6,3,4,2,3,4,2,9,8,7,3,6,5,2,
16、8,9,3,5;unsigned short code = CRC16(src,21);printf(the result is %d/n,code);以下是Delphi實現(xiàn)的代碼unit CRC16;interfaceusesWindows, SysUtils;function CRC(a_strPuchMsg:string):LongWord;implementationconstct_ArrayCRCHi: array0.255 of LongWord=($00, $C1, $81, $40, $01, $C0, $80, $41, $01, $C0,$80, $41, $00, $C1
17、, $81, $40, $01, $C0, $80, $41,$00, $C1, $81, $40, $00, $C1, $81, $40, $01, $C0,$80, $41, $01, $C0, $80, $41, $00, $C1, $81, $40,$00, $C1, $81, $40, $01, $C0, $80, $41, $00, $C1,$81, $40, $01, $C0, $80, $41, $01, $C0, $80, $41,$00, $C1, $81, $40, $01, $C0, $80, $41, $00, $C1,$81, $40, $00, $C1, $81,
18、 $40, $01, $C0, $80, $41,$00, $C1, $81, $40, $01, $C0, $80, $41, $01, $C0,$80, $41, $00, $C1, $81, $40, $00, $C1, $81, $40,$01, $C0, $80, $41, $01, $C0, $80, $41, $00, $C1,$81, $40, $01, $C0, $80, $41, $00, $C1, $81, $40,$00, $C1, $81, $40, $01, $C0, $80, $41, $01, $C0,$80, $41, $00, $C1, $81, $40,
19、$00, $C1, $81, $40,$01, $C0, $80, $41, $00, $C1, $81, $40, $01, $C0,$80, $41, $01, $C0, $80, $41, $00, $C1, $81, $40,$00, $C1, $81, $40, $01, $C0, $80, $41, $01, $C0,$80, $41, $00, $C1, $81, $40, $01, $C0, $80, $41,$00, $C1, $81, $40, $00, $C1, $81, $40, $01, $C0,$80, $41, $00, $C1, $81, $40, $01, $
20、C0, $80, $41,$01, $C0, $80, $41, $00, $C1, $81, $40, $01, $C0,$80, $41, $00, $C1, $81, $40, $00, $C1, $81, $40,$01, $C0, $80, $41, $01, $C0, $80, $41, $00, $C1,$81, $40, $00, $C1, $81, $40, $01, $C0, $80, $41,$00, $C1, $81, $40, $01, $C0, $80, $41, $01, $C0,$80, $41, $00, $C1, $81, $40);ct_ArrayCRCL
21、o:array0.255 of LongWord=($00, $C0, $C1, $01, $C3, $03, $02, $C2, $C6, $06,$07, $C7, $05, $C5, $C4, $04, $CC, $0C, $0D, $CD,$0F, $CF, $CE, $0E, $0A, $CA, $CB, $0B, $C9, $09,$08, $C8, $D8, $18, $19, $D9, $1B, $DB, $DA, $1A,$1E, $DE, $DF, $1F, $DD, $1D, $1C, $DC, $14, $D4,$D5, $15, $D7, $17, $16, $D6,
22、 $D2, $12, $13, $D3,$11, $D1, $D0, $10, $F0, $30, $31, $F1, $33, $F3,$F2, $32, $36, $F6, $F7, $37, $F5, $35, $34, $F4,$3C, $FC, $FD, $3D, $FF, $3F, $3E, $FE, $FA, $3A,$3B, $FB, $39, $F9, $F8, $38, $28, $E8, $E9, $29,$EB, $2B, $2A, $EA, $EE, $2E, $2F, $EF, $2D, $ED,$EC, $2C, $E4, $24, $25, $E5, $27,
23、$E7, $E6, $26,$22, $E2, $E3, $23, $E1, $21, $20, $E0, $A0, $60,$61, $A1, $63, $A3, $A2, $62, $66, $A6, $A7, $67,$A5, $65, $64, $A4, $6C, $AC, $AD, $6D, $AF, $6F,$6E, $AE, $AA, $6A, $6B, $AB, $69, $A9, $A8, $68,$78, $B8, $B9, $79, $BB, $7B, $7A, $BA, $BE, $7E,$7F, $BF, $7D, $BD, $BC, $7C, $B4, $74, $7
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年河南工業(yè)職業(yè)技術學院高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江西水利職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 專題03 句子(第3期)
- 專題04 世界古代史(易混易錯點)
- 簽訂二手房買賣合同注意事項
- 民法租賃合同
- 安裝燈具合同范本
- 裝修工人員工勞動合同
- 渣土運輸工程合同
- 直播銷售策劃合同
- 2025年人教五四新版八年級物理上冊階段測試試卷含答案
- 2025新人教版英語七年級下單詞表(小學部分)
- 2025年春季1530安全教育記錄主題
- 礦山2025年安全工作計劃
- 2025年包裝印刷項目可行性研究報告
- 給客戶的福利合同(2篇)
- T-WAPIA 052.3-2023 無線局域網(wǎng)設備技術規(guī)范 第3部分:接入點和控制器
- 運動技能學習與控制完整
- Unit4MyfamilyStorytime(課件)人教新起點英語三年級下冊
- 財務管理專業(yè)《生產(chǎn)實習》教學大綱
- 一年級口算天天練(可直接打印)
評論
0/150
提交評論