如何在QT / C ++中解压缩用PHP压缩的数据(gzcompres)

时间:2010-04-16 15:11:07

标签: php c++ qt

我有一个由PHP gzcompress($ string)

编写的压缩字符串

我需要在QT上用C ++阅读它。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

用于PHP函数的模拟gzcompress / gzuncompress是ZLIB。它可以在pythonc++中找到 - 您可以找到解压缩功能。

答案 1 :(得分:1)

您可以使用qUncompress:http://doc.trolltech.com/4.6/qbytearray.html#qUncompress
请注意,您需要预先设置预期的未压缩长度。

示例代码(在C ++中):

QByteArray aInCompBytes;
QByteArray aInUnCompBytes;
QByteArray aInCompBytesPlusLen;

int currentCompressedLen = <<read_this>>;
int currentUnCompressedLen = <<read_this>>;

aInCompBytes.resize(currentCompressedLen);

char slideStr[currentCompressedLen];
int slideByteRead = in.readRawData(slideStr, currentCompressedLen);

aInCompBytes = QByteArray(slideStr, slideByteRead);
aInCompBytesPlusLen = aInCompBytes;
aInCompBytesPlusLen.prepend(QByteArray::number(currentUnCompressedLen));
aInUnCompBytes.resize(currentUnCompressedLen);
aInUnCompBytes = qUncompress(aInCompBytesPlusLen);

未压缩的数据将在aInUnCompBytes中。 您需要读取/知道压缩的len和未压缩的len。 它没有经过测试,因为我现在的机器里没有Qt。

祝你好运, 吨。