Название: Сжатие строки с помощью qCompres Отправлено: giker от Февраль 09, 2011, 08:59 Всем доброго дня. Нужно сжать сроку с помощю qCompress. Пишу такой код:
Код: QByteArray asc = string.toAscii(); но tmp = "". Объясните пожалуйста почему? Насколько я понимаю там должна быть последовательность каких-то символов, которые получены в результате сжатия строки. Само-собой string != "". Как правильно сжать строку? Спасибо. Название: Re: Сжатие строки с помощью qCompres Отправлено: Странник от Февраль 09, 2011, 09:17 ты все сжимаешь правильно. но есть одно но - после сжатия ты получаешь бинарные, а не текстовые данные, поэтому нельзя просто засунуть их в QString. используй QByteArray для хранения и передачи сжатых данных, а в QString их преобразовывай только после декомпрессии. если же есть необходимость передачи бинарных данных в текстовом виде (например, XML) - можно использовать такой вариант:
Код: QString tmp = QString(qCompress(string.toAscii(), 9).toBase64()); //сжатая строка в кодировке Base64 Название: Re: Сжатие строки с помощью qCompres Отправлено: giker от Февраль 09, 2011, 10:28 Спасибо Странник, то что нужно :)
Название: Re: Сжатие строки с помощью qCompres Отправлено: kuzulis от Февраль 09, 2011, 11:40 Цитата: giker но tmp = "". [режим разжевывания азов]Как уже было сказано выше - это случилось потому, что значение первого байта в сжатых данных скорее всего получилось == 0, поэтому при добавлении в QString этого массива (с первым нулём) - вышел размер строки == 0. А всё потому, что строки заканчиваются '\0' !!! Вот если бы в сжатом массиве нулю равнялся второй байт - то при добавлении в QString - оно бы показало длину строки в 1 байт! ;) [/режим разжевывания азов] |