关于CRC16校验详细原理与crc16.h头文件的资料分享给大家
本文从理论上推导出CRC算法实现原理,给出三种分别适应不同计算机或微控制器硬件环境的C语言程序。读者更能根据本算法原理,用不同的语言编写出独特风格更加实用的CRC计算程序。
crc16.h头文件源程序如下:
调用:
- /* HELLO.C -- Hello, world */
- #include "stdio.h"
- #include "conio.h"
- unsigned cal_crc(unsigned char *ptr,unsigned char len)
- {
- unsigned int crc;
- unsigned char da;
- unsigned int crc_ta[16]={
- 0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
- 0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,
- };
- crc=0;
- while(len--!=0) {
- da=((unsigned char)(crc/256))/16;
- crc<<=4;
- crc^=crc_ta[da^(*ptr/16)];
- da=((unsigned char)(crc/256))/16;
- crc<<=4;
- crc^=crc_ta[da^(*ptr&0x0f)];
- ptr++;
- }
- return(crc);
- }
- main()
- {
- unsigned int w1=0,w2=0;
- int a=0x0f;
- char b[9]={1,2,3,4,5,6,7,8,1};
- int i=0,j=0;
- unsigned int temp=0;
- temp=cal_crc(b,9);
- if(temp>0)
- {
- printf("%d\n",temp);
- w1=temp/256;
- w2=temp%256;
- printf("%d\n",w1);
- printf("%d",w2);
- }
- else
- printf("%d",a);
- getch();
- }
复制代码
所有资料51hei提供下载:
crc16.rar
(59.03 KB, 下载次数: 71)
|