我希望在压缩文本时保持与全球其他应用程序(包括Web应用程序)的互操作性。由于qCompress和qUncompress似乎有所不同,因此我正在尝试直接从我的Qt应用程序中使用zlib。
我将接受最简单(最简洁)的答案,该答案向我展示如何直接使用zlib库的QByteArray OR 修改qCompress的输出,以便可以在Qt应用程序之外使用它。
以下是我的尴尬尝试:
QByteArray tdata = QString("Oh noes!").toUtf8();
QByteArray cdata;
uLongf len = 12 + 1.002*tdata.length();
compress(&cdata, &len, &tdata, tdata.length());
错误信息:
错误:无法将“QByteArray *”转换为“Bytef *”,用于参数“1”的“int compress(Bytef *,uLongf *,const Bytef *,uLong)”
之后我尝试使用 QByteArray::constData()
compress(cdata.constData(), &len, &tdata, tdata.length());
但是遇到了以下错误:
错误:从 'const char*' 转换为 'Bytef*' 是无效的
我不知道 Bytef 是什么,所以开始查看 zlib 源代码进行调查。但是我在 QtSources/src/3rdparty/zlib/zconf.h 中只能找到这个。
# define Bytef z_Bytef
所以现在我只是迷失了。