crc即迴圈冗餘校驗:
是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查(crc)是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。
對於16位迴圈冗餘效驗(crc-16),crc結果為單字,其低位元組在前,高位元組在後。其生成步驟大致如下:
1) 設定乙個16位的crc暫存器,並賦以初值0xffff
2) 將資料幀中的第乙個位元組,與crc暫存器的低8位按位異或,並儲存在crc暫存器中
3) 將crc暫存器右移1位,,並檢測移出的最低位是否為1,如果最低位為1,則將crc暫存器與固定數0xa001異或
4) 重複步驟3共8次
5) 對資料幀的下乙個位元組重複步驟2,3,4,直到資料域的最後乙個資料
6) 最後的crc暫存器中的內容,就是最後的效驗值,將其附加在資料幀的最後乙個資料之後,並保持低8位在前,高8位在後的放置。
通過c語言實現結果如下:
#include typedef unsigned short uint16;
int main()
; char *buf;
buf=&a[0];
unsigned char i,j,check;
for( i=0; i<6; i++)
buf++;
}printf("%x",crc);
return 0;
}
其中,char a[6]=;為我自己取得待檢測資料幀。
執行結果為低位在前高位在後,即校驗結果為 01 03 00 00 00 0a
迴圈冗餘校驗 CRC32 的 C 語言實現
crc即迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。crc校驗實用程式庫在資料儲存和資料通訊領域,為了保證資料的正確,就不得不採用檢錯的手段。下面是crc32的c語言實現,經過測試,能夠正確執行...
c語言實現CRC校驗和
下面我就將今天的demo 簡單的注釋一下 在傳送方的buffer 22 中,前二十個資料為要傳送的資料,而後兩位即buffer 20 和buffer 21 中的資料就是函式int calcrc int crc,const char buf,int len 產生的crc校驗和。如下 intmain i...
CRC校驗的理解和C語言實現
1 crc是什麼 crc檢驗的基本思想是利用線性編碼理論,在傳送端根據要傳送的k位二進位製碼序列,以一定的規則產生乙個檢驗碼r位 就是crc碼 附在資訊後面,構成乙個新的二進位製碼序列數共 k r 位,最後傳送出去。接收端根據同樣的規則校驗,以確定傳送中是否出錯。接收端有兩種處理方式 1 計算k位序...