(closed) Elemente aus QByteArray nach *char casten?

Alles rund um die Programmierung mit Qt
Antworten
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

(closed) Elemente aus QByteArray nach *char casten?

Beitrag von huckleberry »

Hallo Foristen,

ich habe ein QByteArray mit beispielsweise einigen Bytes

Code: Alles auswählen

 QByteArray datensatz = QByteArray::fromHex("0001020304");
dann habe ich noch eine QTableWidget wo ich für jeden Datensatz in einer Zeile einzelne Elemente dieses QByteArrays pro Byte spaltenweise ausgeben wollte.
Also stünde sollte für meine Variable datensatz in dieser Zeile eine 0 in der ersten spalte, eine 1 in der zweiten Spalte usw.. stehen..
datensatz --> | 0 | 1 | 2 | 3 | 4 |

Code: Alles auswählen

 for (quint64 j = 0; j < *anzahlSpalten; j++) {
        tmpQBA = QByteArray::fromHex("0001020304")

        newItem = new QTableWidgetItem( tr(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);
    }
Hier " newItem = new QTableWidgetItem( tr(tmpQBA.at(0)) );" sagt der Compiler:
/blabla/mainwindow.cpp:146: error: invalid conversion from 'char' to 'const char*'

und die folgenden binären Hex werte werden gar nicht angezeigt, da diese nichtdarstellbare ASCII Zeichen sind.. beispielsweise ist 0x04 == End Of Transmission.

Wie kann ich die 0x01 in ein int mit dem Wert 1 casten?

Ich danke für alle Hinweise.

Mfg Huck
Zuletzt geändert von huckleberry am 12. April 2011 14:22, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

tr() möchte ein (const) char *, QByteArray.at() gibt aber ein char zurück - was sollte der Compiler also anders machen?
Des weiteren - \0x01 als Zeichen - was willst Du damit anfangen? Was soll das für ein Zeichen sein?? Wenn Du ne 1 darstellen willst dann nimm "1" ...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

Beitrag von huckleberry »

Das alles seine Richtigkeit hat, ist mir ja klar, hilft mir aber nicht bei meinem Problem weiter einzelne Elemente eines QByteArrays jeweils in einem Tabellenfeld auszugeben.

Also ich habe 0-255 also 0x00 bis 0xff in einer Binärdatei. Dann würde ich gerne die entsprechende Dezimalzahl ausgeben. Wenn also das i-te Element meines

QByteArray tmp = .. 41 03 45 F4 5E FF 57 9A ..

zB 0x41 ist, soll in einem Tabellenfeld eines QTableWidgets die dezimale 65 stehen und nicht 'A'. Hoffe dies war verständlich. Im nächsten Tabellenfeld würde dann eine 3 stehen. Usw...

(Ich muss dies noch in eine Baumstruktur packen, um mit denen vernünftig zu rechnen, aber eins nachm anderen ;) Erstmal würde ich gerne die Tabelle sehen mit den Werten)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QString hat midnestens 4 verschiedene Möglichkeiten einen Integer in einen String zu wandeln - such Dir eine aus.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
huckleberry
Beiträge: 115
Registriert: 2. Oktober 2010 17:07

Beitrag von huckleberry »

Habe es nun so gelöst.

Code: Alles auswählen

       newItem = new QTableWidgetItem( tr("%1").arg(tmpDN->getNthNumber(i)) );
Antworten