В настоящее время я пытаюсь написать компрессор и декомпрессор с той же целью, что и спецификация RFC Deflate.
Я не могу понять разницу между тем, как блоки составляются при сжатии с фиксированными и динамическими таблицами. Файл обрабатывается LZ77, генерируя (distance, length) + literal
.
- Как узнать тип блока?
- Должен ли я сжимать эти данные?
- Учитывая, что я использую фиксированное сжатие и мне не нужно отправлять таблицы, как кодировщик узнает, как кодировать данные?
- Кроме того, нужно ли отправлять данные до того, как будет выполнено фактическое сжатие?
Меня смущает разница между фиксированными таблицами и таблицей, которую мы отправляем в динамическом режиме, и то, как два блока используют их для кодирования данных.
Я сейчас читаю Сжатие данных: Полная справка . Любой совет будет полезен.