Я пытаюсь построить явный пример динамического блока.Пожалуйста, дайте мне знать, если это не так.
Рассматривая этот пример букв алфавита:
A (0), B (0), C (1), D (0),E (2), F (2), G (2), H (2) и остальные символы, имеющие нулевую длину кода.
Последовательность (SQ) длин кода будет 0 ..., 0,0,1,0,2,2,2,2, ... 0.
Тогда мыпридется сжимать его дальше с кодированием по длине прогона.Таким образом, мы должны вычислить количество повторений и либо использовать флаг 16, чтобы скопировать предыдущую длину кода, либо 17 или 18, чтобы повторить длину кода 0 (используя дополнительные биты).
Моя проблема в этом.После отправки информации заголовка и последовательности длин кода в правильном порядке 16, 17, 18, ... следующая последовательность информации будет выглядеть примерно так:
18, значение некоторых дополнительных битов1,0,2,16, некоторые дополнительные биты имеют значение 0,18, некоторые дополнительные биты имеют значение.(Вероятно, будет еще 18 флагов, поскольку максимальное число повторов равно 138.)
Затем мы имеем то же самое с алфавитом расстояния и, наконец, входными данными, закодированными с помощью канонического Хаффмана, и дополнительными битами, если необходимо.
Нужно ли отправлять коды длиной 0?Если да, то почему?
Если да, то почему необходимо иметь hclit и hcdist, а не только hclen, зная, что длины последовательностей равны 286 для lit / len и 30 длярасстояния?
Если нет, то каким будет реальное решение?
Еще одна проблема:
В этом случае у нас есть коддлина 2 с повторениями (3) значение дополнительных битов 0.
Включено ли это последнее число в конструкцию дерева длины кода?
Если да, я не могу понять, как: флаг 18 имеет следующее максимально возможное значение дополнительных битов 127 (1111111), представляющее138 повторений, и оно не может быть включено в символы алфавита 0-18.
PS Когда я говорю дополнительные биты в этом случае, я имею в виду фактор, который используется, чтобы знать, сколько повторений предыдущей длиныиспользуются.
Точнее 0 - 15 у нас 0-битный коэффициент повторения, для 16,17,18 у нас 2,3,7-битный коэффициент повторения.Значение этих битов - это то, что я имею в виду, имея значение дополнительных битов.
Я думаю, что мне чего-то не хватает в том, что коды Хаффмана генерируются алфавитом длины кода Хаффмана.