首页 > 代码库 > 首部校验和
首部校验和
(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);
}
首部校验和
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。