校验和

网友投稿 402 2022-10-28


校验和

检验和(checksum),在数据处理和数据通信领域中,用于校验目的地一组数据项的和。它通常是以十六进制为数制表示的形式。如果校验和的数值超过十六进制的FF,也就是255. 就要求其补码作为校验和。通常用来在通信中,尤其是远距离通信中保证数据的完整性和准确性。

2、校验和算法实现

代码如下:

USHORT checksum (USHORT *buffer,int size)

{

Unsigned long cksum=0;

While (size>1)

{

Cksum +=*buffer++;

size -=sizeof(USHORT);

}

If (size)

{

Cksum +=*(UCHAR *) buffer;

}

//将32位转换为16位

While (cksum>>16)

Cksum = (cksum>>16) + (cksum & 0xffff);

Return (USHORT) (~cksum);

}

#includeint main(){ int a[8]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}; int i,sum=0; for (i=0;i<8;i++)     sum+=a[i];//将每个数相加     if(sum>0xff)     {         sum+=1;               sum=~sum;          } sum=sum&0xff;  printf("0x%x\n",sum);}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:VDP文件级恢复需要在用VDP备份的机器上浏览
下一篇:ping交换机的SVI地址出现延迟并且很不稳定
相关文章

 发表评论

暂时没有评论,来抢沙发吧~