Deflate: безопасный размер - PullRequest
0 голосов
/ 03 января 2019

У меня проблема с поиском безопасного способа создания блоков, особенно это касается длины кодов Хаффмана.Существует ли безопасное число байтов для чтения из данных, для которых результирующие коды Хаффмана не превышают установленную длину 15, а также что сжатие не будет таким плохим?В спецификации не разъясняется, как достигается это условие.

В данный момент я пытался остановить входную кодировку до определенного количества байтов, потому что не знаю, как с этим справиться.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 04 января 2019

Ограничение длины кодов Хаффмана не выполняется путем ограничения объема данных, которые нужно сжать в блоке.Этот предел будет слишком коротким.Вместо этого, если применение алгоритма Хаффмана приводит к тому, что некоторые коды длиннее 15 битов, то код Хаффмана модифицируется для решения проблемы.См. Например, trees.c в zlib .

Можно также использовать модифицированный алгоритм Хаффмана, который имеет ограничение на максимальную длину кода.См. Быстрый алгоритм для оптимальных кодов Хаффмана с ограниченной длиной .

...