+ -
当前位置:首页 → 问答吧 → 【请教】 checksum代码中>>16的疑惑, 为了byte order ?

【请教】 checksum代码中>>16的疑惑, 为了byte order ?

时间:2010-08-10

来源:互联网

/* TODO: this depends on byte order */
        while (sum >> 16)
                sum = (sum & 0xffff) + (sum >> 16);

为指导为什么在计算的最后要判断超出的高位? 其作用是?

checksum只要累加然后return 取反不是就可以了吗?  即使有溢出超过16位,最后接收端check的时候也不会有影响吧?

没怎么理解,请大家帮解释下,谢谢

作者: nine8   发布时间: 2010-08-10

回复 nine8


    不知道你这里计算的是什么的checksum
IP, tcp, udp的checksum都是反码求和,进位要加到最后。

作者: yeying0506   发布时间: 2010-08-10