导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:CRC编程求助

* 5506: C51编程:CRC编程求助

   mypatrick 
mypatrick发表的帖子 

 C51编程:CRC编程求助
我在看一个CRC-16的校验和生成程序,感觉有的地方不大理解。
代码如下:
buf 为字节序列, len: 序列长度
返回该序列的CRC_16校验码 
多项式: x^16+x^15+x^2+1
unsigned int CRC_16(unsigned char *buf,unsigned int len)
{
        unsigned short crc=0;
        unsigned short c,i;
        while(len!=0)
        {
                c=*buf;
                c<<=8;
                for(i=0;i<8;i++)
                {
                       if((crc^c)&0x8000) crc=(crc<<1)^0x8005;
                       else crc<<=1;
                       c<<=1; 
                }
                len--;
                buf++;
        }
        return crc;
}
   我认为该程序的意思是用buf指向每一个8bit的数据字节,len是数据字节数,
对每一个数据字节求一个16bit的CRC值。
   不明白的地方:生成多项式: x^16+x^15+x^2+1是针对8bit的数据求一个16bit的CRC值。
该程序为什么是对有len个字节的数据求CRC值。
   另外,如程序中对每一个字节都求一个CRC值并存放在变量crc中,那么后面
的crc显然会覆盖前面的crc,最后求出的crc是什么意义的crc?
   不解啊,盼各位前辈指点迷津!


发表时间:2002年2月2日14:46:00

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:我故意把37H=P1,38H=P2,是另有目的,“当无仿真器甚至连显示都无时,光单片机如何看结果”P
[下一篇帖子]:很简单了!!用一两个三极管做个假负载就可以了.