刚写的基于udp通信的校验算法源码

[复制链接]
 楼主| guoxuekun 发表于 2008-7-17 08:45 | 显示全部楼层 |阅读模式
<br />原文作者:玉丫子&nbsp;&nbsp;&nbsp;本文来自于:HELLODSP<br /><br />uint16&nbsp;CheckSumUdp(uint8&nbsp;*check,uint16&nbsp;length)<br />{<br />uint32&nbsp;sum=0;<br />uint16&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;i&lt;(length)/2;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;=&nbsp;sum&nbsp;+&nbsp;((uint32)check[2*i]&lt;&lt;8)+(uint32)check[2*i+1];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(length&0x0001)//长度为奇数个时,要进行该操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;=&nbsp;sum&nbsp;+&nbsp;((uint32)check[2*i]&lt;&lt;8);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;=&nbsp;(sum&0xffff)&nbsp;+&nbsp;((sum&gt;&gt;16)&0xffff);//高16位和低16位相加<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sum&nbsp;&&nbsp;0xffff0000)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{//表示有进位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(&nbsp;(uint16)(~((sum)&0xffff))&nbsp;&nbsp;);<br />}<br />转载请注明出自DSP交流网&nbsp;DSP学习第一论坛&nbsp;DSP技术应用与推广平台&nbsp;DSP开发服务平台&nbsp;http://www.hellodsp.com/bbs/,本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=7667<br /><br /><br /><br />
gtekled 发表于 2012-11-20 14:28 | 显示全部楼层
看得不是太懂,坐等,学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部