在做数据的接收时,常常要用到各种校验,异或校验最简单最实用,在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); }