在做数据的接收时,常常要用到各种校验,异或校验最简单最实用,在Qt中自己编写一种异或校验的方法
数据背景:接收的是16进制数据16 21 37,其中前两个字节表示距离数据,后一个字节是校验位,在程序中首先把它们转化为字符串,然后再做校验,相当于是两个字符串校验,代码如下:
//求两个字符串异或
QString MainWindow::getXORresult(QString str1, QString str2)
{
QString result;
//字符串转QByteArray
QByteArray bs1 = str1.toLatin1();
QByteArray bs2 = str2.toLatin1();
int size = bs1.size();
int size2 = bs2.size();
if(size != size2)
{
return 0;
}
else
{
for(int i=0; i<size; i++)
{
bs1[i] = bs1[i] ^ bs2[i];
}
}
//QByteArray转字符串
return result.prepend(bs1);
}