Einzelne Bytes aus QByteArray als integer ausgeben



  • Hallöchen Foristen,

    ich habe ein QByteArray welches beispieslweise so aussieht:

    QByteArray qba = QByteArray::fromHex("FF01020304");

    Weiterhin habe ich noch eine Tabelle QTableWidget, in welchem ich einzelne Bytes (!) meines QByteArrays pro Kästchen in meiner Tabelle ausgeben möchte.

    for (quint64 j = 0; j < *anzZeilen; j++) {
            tmpQBA = QByteArray::fromHex("FF01023304")
    
            newItem = new QTableWidgetItem( tmpQBA.at(0) );
            this->dTableWidget->setItem(j, 1, newItem);
    
            newItem = new QTableWidgetItem( tmpQBA.at(1) );
            this->dTableWidget->setItem(j, 2, newItem);
    
            newItem = new QTableWidgetItem( tmpQBA.at(2) );
            this->dTableWidget->setItem(j, 3, newItem);
    
            newItem = new QTableWidgetItem( tmpQBA.at(3) );
            this->dTableWidget->setItem(j, 4, newItem);
    
            newItem = new QTableWidgetItem( tmpQBA.at(4) );
            this->dTableWidget->setItem(j, 5, newItem);
        }
    

    In dem Beipsiel oben, hätte ich gerne dann eine Tabelle mit einer Zeile mit den einzelnen "Integer"-Werten dieser einzelner Bytes:
    | 255 | 1 | 2 | 51 | 4 |
    was ja meinem ff, 01, 02, 33, 04 in Hex entspricht. Das dumme ist nur, nicht darstellbare ASCII-Zeichen wie 0x01 werden einfach nicht in meiner Tabelle ausgegeben bzw. sind nicht sichtbar.

    Wie mache ich das?

    (Habe das auch woanders gepostet, als antwort gab es nur extrem unkonstruktive und überhebliche Antworten was nur noch mehr durcheinanderbringt)

    Ich danke allen Hinweisen und Antworten.

    Viele Grüße



  • Beispielsweise bekomme ich dieses asiatische Zeichen, oder es ist erst gar nicht darstallbar - wie EOF usw...
    http://img716.imageshack.us/i/screencp.png/



  • QByteArray.at liefert ein char zurück. der Dritte Parameter von QTableWidgetItem Konstruktor erwaretet einen QString. Das char wird automatisch in einen QString konvertiert was bedeutet, dass der wert als zeichen interpretiert wird.
    Du musst den char wert aber als nummer nach QString konvertieren.



  • Habs gelöst mit:

    newItem = new QTableWidgetItem( tr("%1").arg(tmpQBA.at(0)) );
    

    Danke 😉


Anmelden zum Antworten