?? crc.c
字號:
#include "crc.h"
unsigned int code crc_ta[16]={
0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef};/* CRC余式表 */
unsigned int cal_crc(unsigned char data *ptr, unsigned char data len)
{
unsigned int data crc;
unsigned char data da;
crc=0;
while(len--!=0)
{
da=((unsigned char)(crc/256))/16; /* 暫存CRC的高四位 */
crc<<=4; /* CRC右移4位,相當于取CRC的低12位)*/
crc^=crc_ta[da^(*ptr/16)]; /* CRC的高4位和本字節的前半字節相加后查表計算CRC;后加上上一次CRC的余數 */
da=((unsigned char)(crc/256))/16; /* 暫存CRC的高4位 */
crc<<=4; /* CRC右移4位, 相當于CRC的低12位) */
crc^=crc_ta[da^(*ptr&0x0f)]; /* CRC的高4位和本字節的后半字節相加后查表計算CRC,
然后再加上上一次CRC的余數 */
ptr++;
}
return(crc);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -