unsigned short CheckCRCSum(char *buffer, int size)
{
unsigned long cksum=0;
while(size >1)
{
cksum+=*buffer++;
size -=sizeof(unsigned char);
}
if(size ) cksum += *(unsigned char*)buffer; //这是干什么
cksum = (cksum >> 16) + (cksum & 0xffff); //这两行呢
cksum += (cksum >> 16);
return (unsigned short)(~cksum);
}
还有就是,这个CRC校验码和我看得另外的CRC程序有什么区别(http://expert.csdn.ne
t/Expert/topic/2044/2044816.xml?temp=.3108942)
{
unsigned long cksum=0;
while(size >1)
{
cksum+=*buffer++;
size -=sizeof(unsigned char);
}
if(size ) cksum += *(unsigned char*)buffer; //这是干什么
cksum = (cksum >> 16) + (cksum & 0xffff); //这两行呢
cksum += (cksum >> 16);
return (unsigned short)(~cksum);
}
还有就是,这个CRC校验码和我看得另外的CRC程序有什么区别(http://expert.csdn.ne
t/Expert/topic/2044/2044816.xml?temp=.3108942)
{
unsigned char crc_j,r1,r2,r3,r4;
unsigned int crc_i,ch;
*(x1+crc_len2)=0;
*(x1+crc_len2+1)=0;
r1=*x1;
x1++;
r2=*x1;
x1++;
for (crc_i=0;crc_i<crc_len2;crc_i++)
{
r3=*x1;
x1++;
for (crc_j=0;crc_j<8;crc_j++)
{
r4=r1;
r1=(r1<<1);
if ((r2&0x80)!=0)
r1++;
r2=r2<<1;
if ((r3&0x80)!=0)
r2++;
r3=(r3<<1);
if ((r4&0x80)!=0)
{
r1=r1^0x10;
r2=r2^0x21;
}
}
}
ch=r1;
ch<<=8;
ch|=r2;
return (ch);
}这个的结构更为清晰,
主要想问程序的意思