Russian Qt Forum

Qt => Общие вопросы => Тема начата: n. tr. от Июль 21, 2009, 10:45



Название: распаковка архива unix compress
Отправлено: n. tr. от Июль 21, 2009, 10:45
Нужно распаковывать файлы в таком формате.
Естественно, там нет никакой дополнительной информации, просто файл тупо сжат и всё.
Его успешно распаковывает gzip.
Соотвественно, я понадеялся, что при помощи aUncompress получится сделать это, однако же там ждала засада - выскакивает Z_DATA_ERROR.
К слову, файл, запакованный qCompress ни один архиватор не берёт, хотя при помощи qUncompress (что неудивительно) нормально распаковывается.
В результате гугления, хотя я не очень-то уверен, что правильно всё понял, выяснилось, что разница в порядке следования байт - QT использует BigEndian вместо littleEndian.
Теперь, собственно, вопрос. Как одно переиначить в другое? А если не в этом проблема, то как решить вопрос?


Название: Re: распаковка архива unix compress
Отправлено: ритт от Июль 21, 2009, 10:56
qCompress добавляет магию в начало потока


Название: Re: распаковка архива unix compress
Отправлено: n. tr. от Июль 21, 2009, 12:08
хм, честно говоря не понял, что имеется в виду.


Название: Re: распаковка архива unix compress
Отправлено: Пантер от Июль 21, 2009, 16:39
В начало потока добавляется "магическое число".


Название: Re: распаковка архива unix compress
Отправлено: whirlwind от Июль 21, 2009, 17:42
на всякий случай:
Цитировать
Note: If you want to use this function to uncompress external data compressed using zlib, you first need to prepend four bytes to the byte array that contain the expected length (as an unsigned integer) of the uncompressed data encoded in big-endian order (most significant byte first).