QString(msgLen).toLocal8Bit().data() <- ist das schlau?
-
Hallo,
Ich habe einen QTcpSocket bei welchem ich mit write() Daten versenden möchte. Soweit so gut. Jedoch ist einer der Werte die ich übergebe ein unsinged short (msgLen).
Diesen konvertiere ich jetzt via
QString(msgLen).toLocal8Bit().data()
und man kann es nun halt auch kompilieren. Nur irgendwie will mir das nicht gefallen. Bin ich blind, denn ich finde keinen anderen weg ein Bytearray zu erhalten und geht das überhaupt?
PS: Gebt mir einen besseren Titel für den Thread
-
Es gibt eine Überladung von write() die direkt ein QByteArray akzeptiert. Damit könntest du dir den letzten Schritt ".data()" sparen.
Ich hätte aber eine andere Frage noch: Warum benutzt du toLocal8Bit() und nicht toUtf8()?
Beste Grüße,
Alexander
-
Wozu extra ein bytearray? QTcpSocket erbt von QIODevice, kannst also am einfachsten ein QDataStream verwenden.
QString(msgLen)
wird nicht das machen was du erwartest (vermute ich). Nimm da lieber
QByteArray::number(msgLen)
-
Ich bin bei meinem Vorschlag davon ausgegangen, dass blackfish die Kontrolle über das Schreiben der Daten behalten will. Wenn das keine Rolle spielt ist der Stream natürlich effektiver.
-
KuhTee schrieb:
Wozu extra ein bytearray? QTcpSocket erbt von QIODevice, kannst also am einfachsten ein QDataStream verwenden.
QString(msgLen)
wird nicht das machen was du erwartest (vermute ich). Nimm da lieber
QByteArray::number(msgLen)
Danke, habe ich erst jetzt gesehen.
Und im Nachhinein ist der Weg über QString wirklich unsinnig...deshalb habe ich eigentlich auch nachgefragt. Ich wollte sicher gehen dass da nicht irgendwelche Dinge schief gehen weil ich das Ganze in einen QString konvertiere