原文作者:玉丫子 本文来自于: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)) ); } 转载请注明出自DSP交流网 DSP学习第一论坛 DSP技术应用与推广平台 DSP开发服务平台 http://www.hellodsp.com/bbs/,本贴地址:http://www.hellodsp.com/bbs/viewthread.php?tid=7667
|