Как распаковать в QT / C ++ данные, сжатые в PHP (gzcompres) - PullRequest
1 голос
/ 16 апреля 2010

У меня есть сжатая строка, написанная PHP gzcompress ($ string)

Мне нужно прочитать это с C ++ на QT.

Любая помощь очень ценится!

Ответы [ 2 ]

1 голос
/ 17 апреля 2010

Вы можете использовать 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 на моей машине.

С наилучшими пожеланиями, Т.

1 голос
/ 17 апреля 2010

Аналогом для PHP функций gzcompress / gzuncompress является ZLIB. Он доступен в python и c ++ - там вы можете найти функции для распаковки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...