压缩文本时,我想保持地球上每个其他应用程序(包括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);