//返回值2个字节,16位
unsigned short CheckNum(unsigned short* Buffer, int len)
{
//32位,4个字节
long int check = 0;
while( len > 1)
{
check += *Buffer++;
//一次加工16位
len -= 2;
}
//还有剩余字节那么把他加上
if(len)
check += *(unsigned char*)Buffer;
//32->16,while应该可以去掉,因为一共就是32位
while(check >> 16)
check = (check & 0xffff) + (check >> 16);
return (unsigned short)(~check);
}
Network:检验和
最新推荐文章于 2019-01-21 22:27:17 发布