先看代码
打印结果
可以看到执行完*ptemp++
之后ptemp的指向的地址增加1,而该句是输出指向地址存放的变量值
补充
unsigned char型变量在C++中占一个字节,unsigned short型变量在C++中占两个字节
unsigned short *ptemp = (unsigned short *)pdata;
使用上面这句代码可以将占一个字节的变量,拼接为占两个字节的变量,再对这占两个字节两个字节的变量组,做其余处理
计算机校验和
以下代码可以用于计算IP,ICMP,UDP的校验和
//计算校验和
unsigned short CalculateCheckSum(const unsigned char *pdata, int length)
{
unsigned short *ptemp = (unsigned short *)pdata;
unsigned long temp = 0;
for (int i = 0; i<length / 2; i++)
{
temp += *ptemp++;
}
return ~((unsigned short)((temp & 0xFFFF) + (temp >> 16)));
}