1. 程式人生 > >Qt之異或校驗

Qt之異或校驗

在做資料的接收時,常常要用到各種校驗,異或校驗最簡單最實用,在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);
}