您的位置:首页 > 其它

首部校验和

2016-10-13 13:20 148 查看
(1)四位16进制数分别相加
(2)相加的结果去掉进位,保留四位16进制数
(3)保留的四位16进制数+进位
(4)得到的结果转换成二进制
(5)取反
(6)再转换成16进制数
具体编码如下:
int checksum(unsigned long* buffer, int size)
{
unsigned long cksum = 0;
while(size>1)
{
cksum += *buffer++;
size -= sizeof(unsigned long);
}
if(size)
{
cksum += *(char*)buffer;
}
cksum = (cksum>>16) + (cksum&0xffff);
cksum += (cksum>>16);
return (unsigned long)(~cksum);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  校验和