2015-03-23 2 views
0

Я хотел бы знать, что такое макс. коэффициент сжатия Deflate64.Каков максимальный коэффициент сжатия Deflate64?

В стандартной спецификации дефлята степень сжатия составляет до 1032: 1.

Источник: цифры «1032 1» представлена ​​на сайте ZLIB, где сказано, что:

Предел исходит из того, что одна длина/расстояние пара может представлять не более 258 выходные байты. Длина требует, по меньшей мере, одного бита , а расстояние требует, по меньшей мере, одного бита, поэтому два бита могут выдать 258 байтов или восемь бит в выводе 1032 байта. Динамический блок имеет без ограничения длины, поэтому вы можете получить сколь угодно близко к пределу из 1032: 1.

Поскольку Deflate64 поддерживает длину до 65,538, коэффициент должен быть намного выше. Я прав, когда я просто заменяю 258 байтов в оптовой цитате с 65.538 и умножаю это на 4, чтобы получить соотношение 262152:1?

Заранее спасибо.

ответ

2

Количество (3 + 65535) * 8/(16 + 1) = 524304/17 ~ = 30841,4: 1.

Базовое значение для последнего кода длины равно 3, а количество дополнительных битов составляет 15, поэтому максимальная длина для соответствия равна 3 + 65535. Вы можете получить столько байтов, или восемь раз, что в битах, для каждой пары длины/расстояния. 524304 бит. Минимальный размер для кода длины равен 1, поэтому с дополнительными битами максимальная длина может быть представлена ​​16 битами. За этим следует код расстояния для расстояния 1, для которого минимальный размер составляет 1 бит. Таким образом, у нас есть 17 бит сжатых данных для получения 524304 бит несжатых данных.

+0

Благодарим вас за ответ. Не могли бы вы объяснить мне компоненты расчета? Я просто умножал 65538 на 4, но ваш ответ, кажется, содержит намного больше информации внутри. Благодарю. – vigri

+1

Хорошо, что вы спросили. Когда я начал объяснять это, я понял, что допустил ошибку. Это было исправлено. –