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

 *第2237篇: C51编程:CRC编程求助

  
楼 主:mypatrick 2002年2月2日14:46
 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?
   不解啊,盼各位前辈指点迷津!

>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:硬件:哪位大虾知道SAM卡的6个触点是如何定义的?谢谢!!

[下一篇主题]:硬件:5v总线与3v总线有什么要求?