我使用的os:win7。
我使用的開發環境:vs2010 + sp1
演算法原始碼:
1 unsigned int create_crc_2(unsigned char *parr, unsigned intparr_len)214
//資料長度為偶數,原樣複製資料
15else
1620
21//
申請空間失敗
22if (null ==pbuf)
2326
27//
crc為用來移位的32位資料結構,ploy為32位的生成多項式
28 unsigned long crc = 0, ploy = 0;29
//crc餘數值
30 unsigned int crc_code = 0;31
int i = 0, j = 0, k = 0;32
33//
crc = 0xffff0000
34//
crc校驗初始值為0
35 crc = 0
;
36 ploy = 0x80000000;37
//求得32位的生成多項式
38 ploy = ploy ^ ((unsigned long)ploynomal << 15
);39
40//
for (i = 0; i < 2; i++) 實現編碼前預置移位暫存器全為1
41//
先講資料項的前16位放入crc中
42 crc = ((unsigned long)pbuf[0] << 24) ^ ((unsigned long)pbuf[1] << 16
);43
44//
該迴圈實現資料的移位,計算crc餘數
45for (i = 2; i < (int)parr_len + 1; i += 2)46
53//
移位完畢,則移入0000 到 crc的低16位
54else
5559
6061
if (2 ==i)
6273
74//
由於捨去k個0, 因此只需進行16-k次移位
75for (j = 0; j < (16 - k); j ++)
7683}84
else
8594}95
}9697 crc_code = (unsigned int)(crc >> 16
);98
99//
清除緩衝
100delete
pbuf;
101 pbuf =null;
102103
//返回計算結果
104return
crc_code;
105 }
c 中字元陣列操作(char陣列)
1 strcpy s1,s2 複製字串 s2 到字串 s1。2strcat s1,s2 連線字串 s2 到字串 s1 的末尾。3strlen s1 返回字串 s1 的長度。4strcmp s1,s2 如果 s1 和 s2 是相同的,則返回 0 如果 s1s2 則返回值大於 0。5strchr s1,...
C 實現CRC校驗演算法
2007 06 16 10 06 by l,2734 visits,收藏,編輯 region crc校驗 crc高位校驗碼checkcrchigh static byte arraycrchigh crc地位校驗碼checkcrclow static byte checkcrclow crc校驗 校...
CRC16 演算法及c實現
標準crc生成多項式如下表 名稱 生成多項式 簡記式 標準引用 crc 4 x4 x 1 3 itu g.704 crc 8 x8 x5 x4 1 0x31 crc 8 x8 x2 x1 1 0x07 crc 8 x8 x6 x4 x3 x2 x1 0x5e crc 12 x12 x11 x3 x ...