16進制QString轉數字

    INT64 tmp = 0;
    //舉例:QString hexStr = "4646464646433244";
    //第一步可以將16進制字符串分割得到下面的數組, 可以用str.toInt(NULL, 16)
    //高字節在前,低字節在後
    int array[8] = {0x46, 0x46, 0x46, 0x46, 0x46, 0x43, 0x32, 0x44};
    for(int i=0; i<8; i++)
    {
        if(i == 0)
        {
            //Check if it is negative value
            if((array[0] & 0x80) == 0x80)
                tmp += ((INT64)((array[0] & 0xFF) | 0xFFFFFFFFFFFFFF00) << 7*8);
            else
                tmp += ((INT64)(array[0] & 0xFF) << (7*8));
        }
        else
        {
            tmp += ((INT64)(array[i] & 0xFF) << (7-i)*8);
        }

    }

    qDebug() << tmp;
    for(int i=0; i<8; i++)
    {
        qDebug() << QString::number(tmp>>((7-i)*8) & 0xFF, 16);
    }

進一步,可以將代碼封裝爲函數去調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章