Chciałbym zachować zgodność operacyjną wszystkich innych aplikacji na świecie (w tym aplikacji internetowych) podczas kompresji tekstu. Ponieważ qCompress i qUncompress wydają się działać przeciwko ziarnu, próbuję użyć zlib bezpośrednio z mojej aplikacji Qt.Jak zlib skompresować QByteArray?
zgodzę najprostszy (minimalny) najbardziej odpowiedź, że pokazuje mi, jak korzystać z biblioteki zlib z QByteArray bezpośrednio LUB zmodyfikować wyjście qCompress tak, że może on być stosowany poza aplikacją Qt.
Oto mój kłopotliwy próba:
QByteArray tdata = QString("Oh noes!").toUtf8();
QByteArray cdata;
uLongf len = 12 + 1.002*tdata.length();
compress(&cdata, &len, &tdata, tdata.length());
i błąd:
error: cannot convert 'QByteArray*' to 'Bytef*' for argument '1' to 'int compress(Bytef*, uLongf*, const Bytef*, uLong)'
Potem próbowałem za pomocą QByteArray :: constData()
compress(cdata.constData(), &len, &tdata, tdata.length());
Ale uzyskałem następujący błąd:
error: invalid conversion from 'const char*' to 'Bytef*'
Nie mam pojęcia, czym jest Bytef, więc szukam źródeł zlib, aby zbadać. Ale wszystko, co mogę znaleźć na to w QtSources/src/3rdParty/zlib/zconf.h
# define Bytef z_Bytef
Więc teraz jestem po prostu stracone.
można użyć iostreams impuls jest: ma filtr zlib – akappa