нужна помощь, чтобы понять, как работает DEFLATE Encoding. Я знаю, что это комбинация алгоритма LZSS и кодирования Хаффмана.
Так что пусть закодируют, например, "Deflate Later". Параметры: [Буфер поиска: 8 КБ и буфер просмотра вперед 4 КБ] Что ж, вывод алгоритма LZSS: «Deflate ‹5, 4>». На следующем этапе используется статическое кодирование Хаффмана для уменьшения избыточности. Вот моя проблема, я не знаю, как мне кодировать эту пару ‹5, 4> с помощью Хаффмана.
[Отредактировано]
D 000
f 001
l 010
a 011
t 100
_ 101
e 11
Итак, в соответствии с этой таблицей строка «Deflate» записывается как 000 11 001 010 011 100 11 101. В качестве следующего шага давайте закодируем пару (5, 4). Фиксированный префиксный код длиной 4 согласно книге "Сжатие данных - Полный справочник" равен 258, за которым следует фиксированный префиксный код длиной 5 (код 4 + 1 дополнительный бит).
Это можно резюмировать так:
длина 4 -> 258 -> 0000010
расстояние 5 -> 4 + 1 дополнительный бит -> 00100|0
Итак, закодированная строка записывается как [заголовок: 1 01] 000 11 001 010 011 100 11 101 0000010 001000 [конец блока: 0000000], НО если я создам дерево Хаффмана, это больше не будет статическим Хаффманом, правильно?
Добрый день