八斗指什么:帮我看看程序?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 11:13:15
DNP-CRC数据校验
现有一个16位CRC校验程序,CRC-16校验多项式:g(x)=x(16)+x(13)+x(12)+x(11)+x(10)+x(8)+x(6)+x(5)+x(2)+1
程序如下:
unsigned short getCRC(unsigned char *puchMsg, unsigned short usDataLen)
{
int i,j;
unsigned short crc,flag;
crc=0xffff;

for(i=0; i<usDataLen; i++)
{
crc^= puchMsg[i];
for(j=0; j<8; j++)
{
flag=crc&0x0001;
if(flag)
{
crc ^= 0xa6bc;
crc>>=1;
}
else
{
crc>>=1;
}
}
}
return(crc);
}
各位高手帮我看看程序到底有什么问题啊!怎么校验不对?
正确的校验码是这样的:
buff[]={05 64 0B C4 01 00 01 00},校验码应该是:C2 2E.