QtZip + base64
-
Hallo,
ich habe einen string. Er wurde erstmal base64 kodiert und dann gezippt. Gibt es Methoden einen gezippten String zu öffnen und den Inhalt danach zu dekodieren? Wie gesagt, das ist keine Datei,sondern ein String.
-
Und warum ein zweiter Thread zum selben Thema?
-> versuchs mal mit qCompress/qUncompress. Und Doku dazu lesen.
-
mein Problem ist, ich weiss nicht wie ich die Input-daten aufschreiben soll. Das ist ein String von maschienenlesbaren Zeichen. Wie kann ich das aufschreiben.
Also ich habe folgendes für mein Problem gefunden:
QByteArray input;<----------------wie kann ich mein Input aufschreiben?
QByteArray uncomp = qUncompress(input);
QByteArray decodedData = QByteArray::fromBase64(uncomp);
-
koschka schrieb:
mein Problem ist, ich weiss nicht wie ich die Input-daten aufschreiben soll. Das ist ein String von maschienenlesbaren Zeichen. Wie kann ich das aufschreiben.
Ich dachte du hast bereits einen gezippten String. Steht so in deinem Anfangspost:
ich habe einen string. Er wurde erstmal base64 kodiert und dann gezippt.
-
ja, und mit qUncompress() kann ich den wahrscheinlich unzippen?
-
koschka schrieb:
ja, und mit qUncompress() kann ich den wahrscheinlich unzippen?
Ja (wahrscheinlich), aber lies dir die Doku dazu durch, da steht ein wichtiger Hinweis!
-
Die Daten soll man ab dem 5 Byte einpacken in QByteArray.
Ich wollte allgemein fragen, ob ich mit Methoden richtig liege? Oder für mein Problemstellung andere Lösung vorhanden ist?static const char dat[40] = {0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xaa, 0x2e, 0x2e, 0x49, 0x2c, 0x29,0x2d, 0xb6, 0x4a, 0x4b, 0xcc, 0x29, 0x4e, 0xad, 0x05, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00,5. 0x2a, 0x63, 0x18, 0xc5, 0x0e, 0x00, 0x00, 0x00 }; unsigned int size = 14; //expected uncompresed size, reconstruct it BigEndianes, last 4bytes 0x0e, 0x00, 0x00, 0x00 = 0x0e = 148. QByteArray dataPlusSize; //empty array, add uncompresed size at the begining //BigEndian order dataPlusSize.append( (unsigned int)((size >> 24) & 0xFF)); dataPlusSize.append( (unsigned int)((size >> 16) & 0xFF)); dataPlusSize.append( (unsigned int)((size >> 8) & 0xFF)); dataPlusSize.append( (unsigned int)((size >> 0) & 0xFF)); dataPlusSize.append( data, data.size() );
-
eine dumme Frage: Wie schreibe ich meinen String als binär oder hexadezimal? Er besteht aus dem maschienenkode(komische Zeichen).