大侠给我个完整的crc 程序 用C语言实现的,能在PC机上运行的。我马上拿出100分。。。

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:34:09
或者 完善我这段代码:
#include<stdio.h>
unsigned int cal_crc(unsigned char *ptr, unsigned char len)
{
unsigned char i;
unsigned int crc=0;
while(len--!=0)
{
for(i=0x80; i!=0; i/=2)
{
if((crc&0x8000)!=0) {crc*=2; crc^=0x1021;} /* 余式CRC 乘以2 再求CRC */
else crc*=2;
if((*ptr&i)!=0) crc^=0x1021; /* 再加上本位的CRC */
}
ptr++;
}
return(crc);
}
main()
{
unsigned char *ptr,len;
unsigned int crc;

crc=cal_crc(unsigned char *ptr, unsigned char len);

}

楼主程序中调用函数cal_crc()的方式不正确。函数cal_crc()用于计算输入串的校验码,因此函数输入参数包含输入串及该串的长度。
建议将main()函数修改为:
#include <string.h>
void main()
{
unsigned char buf[] = "ABCDEFG1234567"; // 输入串
unsigned char len = 14; // 输入串的长度
unsigned int crc;
crc = cal_crc(buf, len);
}

最后需要注意的是,输入串的长度不能大于256个字节。上述例子程序中假定了输入串为字符串,实际上,还可以是字节串,此时变量len表示字节串的包含的字节个数。