環境: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的計算。最近一直在...