netcomm.c

来自「CP2201和51单片机实现ARP ICMP IP UDP协议」· C语言 代码 · 共 34 行

C
34
字号


unsigned int chksum(unsigned char xdata *check,unsigned int length) //计算校验和
{
	unsigned long sum=0;
	unsigned int i;
	unsigned int xdata *ptr; 
   	 ptr=(unsigned int xdata *)check;
	for (i=0;i<(length)/2;i++)
	{
		sum+=*ptr++;
	}
	if (length&0x01)//表示长度为单数
	{
		sum=sum+((*ptr)&0xff00);
	}
	sum=(sum&0xffff)+((sum>>16)&0xffff);//高16位和低16位相加
	if(sum&0xffff0000)
	{//表示有进位
		sum++;
	}
	return ( (unsigned int)((sum)&0xffff));
//	return ( (UINT)(~((sum)&0xffff)));
}

unsigned int Swap16U(unsigned int data16u)
{
	unsigned int	a;
	a = data16u >> 8;
	a += ((data16u & 0xFF) << 8);
	return	a;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?