关于校验码的算法
最近工作遇到和校验码打交道的地方,很多地方都会生成校验码.校验码的计算方法也是多种多样的,但是根本不离其宗.
这里我们介绍几种常用的校验码.
1.异或校验码.
听名字就会知道,需要做异或运算.XOR算法,这个是按照字符做异或运算,最终得到一个异或校验码.
异或,相同为0,不相同位1,下面这个算法就是异或之后输出结果我们用int型输出数据.
void XOR(char* p,int nsize,int &x)
{
for(int i=0;i<nsize;i++)
{
if(i==0)
{ x =p[i];
}
else
{
x^=p[i];
}
}
}
2.和校验
.算法上就是求和,我们把上面的算法稍微修改一下就是求和,把异或运算改成求和运算就好了.
void XOR(char* p,int nsize,int &x)
{
for(int i=0;i<nsize;i++)
{
if(i==0)
{ x =p[i];
}
else
{
x+=p[i];
}
}
}
3.CRC16 校验,这种都需要根据说明资料按照要求计算就好了.
校验码说简单也简单,说复杂也是复杂,关键是看你怎么使用,目前我们常见的就是异或和求和计算校验码.
仅记录工作中的小知识点.!!!