[资料分享] 刚写的基于UDP通信的校验算法源码

大意了   2008-7-16 17:04 楼主
原文作者:玉丫子   本文来自于:HELLODSP
uint16 CheckSumUdp(uint8 *check,uint16 length)
{
uint32 sum=0;
uint16 i;
        for (i=0;i<(length)/2;i++)
        {
                sum = sum + ((uint32)check[2*i]<<8)+(uint32)check[2*i+1];
        }
        if(length&0x0001)//长度为奇数个时,要进行该操作
        {
                sum = sum + ((uint32)check[2*i]<<8);
        }
        sum = (sum&0xffff) + ((sum>>16)&0xffff);//高16位和低16位相加
        if(sum & 0xffff0000)
        {//表示有进位
                sum++;
        }
        return ( (uint16)(~((sum)&0xffff))  );
}

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复