<br />原文作者:玉丫子 本文来自于:HELLODSP<br /><br />uint16 CheckSumUdp(uint8 *check,uint16 length)<br />{<br />uint32 sum=0;<br />uint16 i;<br /> for (i=0;i<(length)/2;i++)<br /> {<br /> sum = sum + ((uint32)check[2*i]<<8)+(uint32)check[2*i+1];<br /> }<br /> if(length&0x0001)//长度为奇数个时,要进行该操作<br /> {<br /> sum = sum + ((uint32)check[2*i]<<8);<br /> }<br /> sum = (sum&0xffff) + ((sum>>16)&0xffff);//高16位和低16位相加<br /> if(sum & 0xffff0000)<br /> {//表示有进位<br /> sum++;<br /> }<br /> return ( (uint16)(~((sum)&0xffff)) );<br />}<br />转载请注明出自DSP交流网 DSP学习第一论坛 DSP技术应用与推广平台 DSP开发服务平台 http://www.hellodsp.com/bbs/,本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=7667<br /><br /><br /><br /> |
|