Я хотел бы поддерживать совместимость между любыми другими приложениями на планете (включая веб-приложения) при сжатии текста. Поскольку qCompress и qUncompress, похоже, идут против зерна, я пытаюсь использовать zlib непосредственно из моего приложения Qt.Как zlib сжать QByteArray?
Приму простейший (самый минимальный) ответ, который показывает мне, как использовать библиотеку ZLIB с QByteArray непосредственно ИЛИ модифицировать вывод qCompress так, что она может быть использована за пределами приложения Qt.
Вот моя неловкая попытка:
QByteArray tdata = QString("Oh noes!").toUtf8();
QByteArray cdata;
uLongf len = 12 + 1.002*tdata.length();
compress(&cdata, &len, &tdata, tdata.length());
И ошибка:
error: cannot convert 'QByteArray*' to 'Bytef*' for argument '1' to 'int compress(Bytef*, uLongf*, const Bytef*, uLong)'
Затем я попытался с помощью QByteArray :: constData()
compress(cdata.constData(), &len, &tdata, tdata.length());
Но получил следующее сообщение об ошибке:
error: invalid conversion from 'const char*' to 'Bytef*'
Я понятия не имею, что такое Bytef, поэтому я начинаю искать источники zlib для исследования. Но все, что я могу найти для этого в QtSources/SRC/3rdparty/Zlib/zconf.h
# define Bytef z_Bytef
Так что теперь я просто потерял.
вы могли бы использовать iostreams BOOST: он имеет ZLIB фильтр – akappa