压缩文本时,我想保持地球上每个其他应用程序(包括Web应用程序)之间的互操作性。由于qCompress和qUncompress似乎与实际情况背道而驰,因此我试图直接在我的Qt应用程序中使用zlib。

我将接受最简单(最简单)的答案,该答案向我展示了如何将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());

错误:



然后我尝试使用QByteArray::constData()
compress(cdata.constData(), &len, &tdata, tdata.length());

但是出现了以下错误:



我不知道Bytef是什么,所以我开始寻找zlib源进行调查。但是我能找到的全部在QtSources/src/3rdparty/zlib/zconf.h中
# define Bytef                 z_Bytef

所以现在我只是失去了。

最佳答案

基于qUncompress中的this注释,我认为这很容易。



因此,您可以像这样压缩它:

QByteArray tdata = QString("Oh noes!").toUtf8();
QByteArray compressedData = qCompress(tdata);
compressedData.remove(0, 4);

09-26 08:33