QByteArray zu integer
Wie Sie vielleicht herausgefunden haben, aus dem Titel, ich habe Probleme bei der Konvertierung einer QByteArray
eine Ganzzahl.
QByteArray buffer = server->read(8192);
QByteArray q_size = buffer.mid(0, 2);
int size = q_size.toInt();
Jedoch size
0 ist. Die buffer
erhält keine ASCII-Zeichen, und ich glaube, die toInt()
- Funktion wird nicht funktionieren, wenn es nicht in ein ASCII-Zeichen. Die int size
werden sollte, 37 (0x25), aber - wie ich schon sagte - es ist 0.
Den q_size
ist 0x2500
(oder andere endian order - 0x0025
).
Was ist hier das problem ? Ich bin mir ziemlich sicher, dass q_size
hält die Daten, die ich brauche.
InformationsquelleAutor Ahmed | 2009-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe nicht versucht, diese selbst zu sehen, ob es funktioniert, aber es sieht von der Qt-API, wie Sie möchten, dass ein QDataStream. Dies unterstützt die Extraktion aller die grundlegenden C++ - Typen und kann erstellt werden mit einem QByteArray als Eingabe.
InformationsquelleAutor Troubadour
Etwas, wie das funktionieren sollte, mit einem Daten-stream zum Lesen aus dem Puffer:
Ich gab bereits Ihre Antwort ein +1. Wollte nur hinzufügen, ein Beispiel.
Dachte, ich sollte erwähnen, für diejenigen, die hier von Google - Wenn Sie brauchen, um zu konvertieren eine little-endian-array, so verwenden Sie
ds.setByteOrder(QDataStream::LittleEndian)
InformationsquelleAutor Ropez
Den
toInt
- Methode analysiert ein int, wenn dieQByteArray
enthält einen string, der mit Ziffern. Sie wollen interpretieren Sie die roh-bits als integer. Ich glaube nicht, dass es eine Methode gibt, für die, die inQByteArray
, so werden Sie zu konstruieren, der Wert sich aus den einzelnen bytes. Wahrscheinlich so etwas wie dies funktionieren wird:(Oder Umgekehrt, je nach Endianness)
ohhhhh du sagst die
.to<numberType>
Funktionen fürQByteArray
funktionieren, wenn die Daten ein Zeichenfolge. Ich habe von binären Rohdaten und zog meine Haare aus, Frage mich, warum es nicht funktioniert. Danke, das ist nicht deutlich in der Dokumentation der IMO, aber durchaus Sinn macht, im Nachhinein, da es genau die gleichen Argumente und funktioniert genauso wie derstrtol
Familie von Funktionen. Dumm mich.InformationsquelleAutor sth
Hatte ich große Probleme bei der Umwandlung von seriellen Daten
(QByteArray)
integer, die gemeint war, verwendet werden als Wert für einProgress Bar
, aber gelöst ist es auf sehr einfache Weise:InformationsquelleAutor David Okereafor
Diese funktioniert bei mir:
data
ist ein qbytearray, von index = 1 bis 4 sind integer-array.InformationsquelleAutor SIFE
Erstellen Sie ein QDataStream, betreibt auf Ihrem QByteArray. Dokumentation ist hier
InformationsquelleAutor Darien Pardinas
funktioniert bei mir
InformationsquelleAutor Antoine Nguyen
Versuchen
toInt(bool *ok = Q_NULLPTR, int base = 10) const
Methode der Klasse QByteArray.QByteArray-Dokumentation: http://doc.qt.io/qt-5/QByteArray.html
InformationsquelleAutor wair92