⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checksum.cpp

📁 此程序为网络通信的16位校验累加和的经典程序。虽然简单但是很经典。代码简洁
💻 CPP
字号:
#include <stdio.h>
/********************************************************************
函数:    CheckSumUdpChar( )  网络通信的求16位的检验和程序
入口参数:unsigned char *check 以字节为单位的指针,要求的累加和数据
出口参数:求得的16位累加和数据

例子:                  check[0] check[1]
                        check[2] check[3]
		                ........ ........
		                ........ ........
		                ........ ........
  结果:&&&&&&&&&&&&&&&& ******** ********
                        &&&&&&&& &&&&&&&&
结果1:                 ^^^^^^^^ ^^^^^^^^
结果2:结果1取反:      %%%%%%%% %%%%%%%%  想要的结果
********************************************************************/

unsigned int CheckSumUdpChar(unsigned char *check,unsigned int length)
{
unsigned long sum=0;
unsigned int i;
	for (i = 0; i < length; i++)
	{
		if(i&1)
			sum += (unsigned long)check[i];
		else
            sum += (unsigned long)check[i]<<8;
		if(sum >> 16)
		{
			sum++;
			sum &= 0xffff;
		}
	}
    return ~sum;
}





int main()
{
	unsigned char a[20]={0x45,0x00,0x00,0x1E,0xD7,0x0C,0x00,0x00,0x40,0x11,0x00,0x00,0xC0,0xA8,0xC7,0x05,0xC0,0xA8,0xC7,0x70};
	unsigned int b;

	b=CheckSumUdpChar(a,20);
	printf("%x       %x\n",(b>>8)&0x00ff,b&0x00ff);
	return 0;
}

⌨️ 快捷键说明

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