首页 > 其他 > 详细

首部校验和

时间:2016-11-17 02:37:00      阅读:256      评论:0      收藏:0      [点我收藏+]

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

}


首部校验和

原文:http://12045330.blog.51cto.com/12035330/1873529

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!