校验和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了校验和相关的知识,希望对你有一定的参考价值。

检验和(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);

    }

#include<stdio.h>
int 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);
}

本文出自 “12034922” 博客,请务必保留此出处http://12044922.blog.51cto.com/12034922/1862644

以上是关于校验和的主要内容,如果未能解决你的问题,请参考以下文章

前端校验和后端校验

数据校验及校验和总结

5checksum(校验和)的实现

校验和计算方法

使用标记/空间奇偶校验和无奇偶校验有啥区别?

BCC校验(异或和校验)