你的文章我打不开
先介绍一下我了解的crc算法
程序如下:
※ 本算法分成两个程序
1) 建立数据表的子程序
void Bulid_Table_16(unsigned int ccitt_16[])
{
unsigned int i,j,k,crc;
for( i=0; i<256 ;i++ )
{
k=i<<8;
crc=0;
for(j=0; j<8 ;j++ )
{
if( (crc^k)&0x8000 )
crc=( crc << 1 ) ^ 生成的多项式;
else
crc<<=1;
k<<=1;
}
ccitt_16[i]=crc;
}
}
注意:《生成的多项式》= X16+X15+X2+1=1 1000 0000 0000 0101=8005H
CCITT的标准:X16+X12+X5+1=1 0001 0000 0010 0001=1021H2)CRC循环冗余校验码的计算子程序
unsigned int HX_CRC(unsigned char *buf,unsigned char len )
{
unsigned char ix;
unsigned int crc; crc=0;
for( ix=0; ix<len ;ix++)
{
crc=( crc << 8 )^ccitt_16[ (crc >>8) ^ buf[ix]];
}
return crc;
}
注意:缓冲区的长度≤256