Die Speicherung von integer zu QByteArray mit nur 4 bytes
Dauert es 4 bytes zur Darstellung eine ganze Zahl. Wie kann ich das speichern einer int
im QByteArray
so, dass es dauert nur 4 bytes?
QByteArray::number(..)
konvertiert den integer in string, so nimmt mehr als 4 bytes.QByteArray((const char*)&myInteger,sizeof(int))
scheint auch nicht zu funktionieren.
- Tatsächlich, te zweite Lösung arbeitet 🙂 Sie müssen nur warf es wieder richtig. Wird die post eine Antwort, wenn timer ermöglichen es damit anderen zu helfen (ich ' m sehen eine Menge von dieser Frage überall, nirgendwo richtig gelöst, SO Weise :))
- Ich weiß, das ist sowas von alt, aber was meinst du mit
cast it properly
? Ich habe versucht, werfe es ordnungsgemäß für die letzten 2 Stunden.. 😀
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt mehrere Möglichkeiten, um eine Ganzzahl in eine
QByteArray
, aber das folgende ist in der Regel die sauberste:Dies hat den Vorteil, dass Sie schreiben, mehrere ganze zahlen (oder anderen Daten-Typen), um das byte-array ziemlich günstig. Es erlaubt Ihnen auch, den endian der Daten mit
QDataStream::setByteOrder
.Update
Während die Lösung oben funktioniert, die Methode, die von
QDataStream
zum speichern von Ganzzahlen können änderungen in zukünftigen Versionen von Qt. Der einfachste Weg, um sicherzustellen, dass es immer funktioniert, ist der explizit die version des Daten-format vonQDataStream
:Alternativ können Sie vermeiden, mit
QDataStream
zusammen und verwenden Sie eineQBuffer
:myInteger
ist der Typqint32
oderquint32
)?@Primož Kralj nicht bekommen um auf die Entsendung einer Lösung mit seinem zweiten Methode, so ist es hier:
Drucke:
auf einer x64-Maschine.