📄 checksum.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 + -