CRC32校驗 c實現

2021-09-17 18:32:10 字數 1451 閱讀 9617

環境:vs2013 成功編譯並執行

#include

#include

#include

#pragma warning(disable:4996 )

//這樣防止警告

dword crc32table[

256]

;//0x04 c1 1d b7

dword bitreverse

(dword poly)

//進行位顛倒

return dwret;

}//以這個ieee802.3標準crc32多項式為例:x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 相應的bit為上對應1

void

crc32init

(dword poly)

//碼表生成

crc32table[i]

= eachgen;}}

dword crc32encrypt

(dword crc32,

char

*data, ulong datalen)

return crc32;

}int

main()

fseek

(fp,0,

seek_end);

filelen =

ftell

(fp)

; buffer =

(char*)

malloc

(filelen *

sizeof

(char))

;memset

(buffer,

0, filelen *

sizeof

(char))

;printf

("file length : %d\n"

, filelen)

;fseek

(fp,0,

seek_set);

//定位到檔案開頭 開始讀取資料if(

null

==fread

(buffer,

sizeof

(char

), filelen, fp)

) crc32 =

0xffffffff

;//作為起始值 運算後分布更好點

crc32 =

crc32encrypt

(crc32,buffer,filelen)

; crc32 ^

=0xffffffff

;printf

("the result of the crc is the : %8x\n"

,crc32);if

(fp)

fclose

(fp)

;return0;

}

CRC32演算法實現

crc32 檢錯能力極強,開銷小,易於用編碼器及檢測電路實現。從其檢錯能力來看,它所不能發現的錯誤的機率僅為0.0047 以下。從效能上和開銷上考慮,均遠遠優於奇偶校驗及算術和校驗等方式。因而,在資料儲存和資料通訊領域,crc無處不在 著名的通訊協議x.25的fcs 幀檢錯序列 採用的是crc cc...

迴圈冗餘校驗 CRC32 的 C 語言實現

crc即迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。crc校驗實用程式庫在資料儲存和資料通訊領域,為了保證資料的正確,就不得不採用檢錯的手段。下面是crc32的c語言實現,經過測試,能夠正確執行...

CRC32學習總結

這幾天一直在研究crc相關的知識,本來通訊網學習過相關的知識,但是比較淺。通過這幾天的尤其是今天的學習,我對於crc有了全新的認識。課本上主要著重介紹直接計算法,就是資料補零再和生成多項式做除法。這種方法利用迴圈來實現是比較容易的,但是在fpga中,想要利用硬體的併發性來實現crc的計算。最近一直在...