首部校验和

网友投稿 230 2022-10-28


首部校验和

(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);

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringCloud入门实验环境搭建
下一篇:java使用JDBC连接数据库的五种方式(IDEA版)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~