Skip to content

Заголовочный Символ (16-битные Метаданные Сжатия)

Каждая JSSC-сжатая string начинается с одного UTF-16 символа, который хранит все метаданные сжатия, необходимые для расжатия.

Такой символ называется Заголовочный Символ.

Он содержит Индекс Режима Сжатия, флаги и другие параметры. Все эти данные полностью помещаются в его 16 битов, позволяя остальной string содержать только сами сжатые данные.

Стандартная Компоновка Битов

Не смотря на то что каждый режим сжатия может интерпретировать 16 битов по-своему, большинство режимов соответствуют стандартной компоновке.

Вместо того чтобы рассматривать заголовочный символ как четыре полубайта, JSSC группирует биты в блоки:

НазваниеТипЗначение / Стандартное Использование
Код #1ЧислоИндекс Режима Сжатия
Код #2Число(Используется режимом сжатия)
Код #3ЧислоТип данных / JUSTC использован? / BeginID
i?ПеременнаяRLE использован на входных данных?
o?ПеременнаяRLE использован на выходных данных?
s?ПеременнаяПоследовательности найдены и сжаты?
b?ПеременнаяBeginID использован? (false = Код #3 это BeginID)

Нестандартные Компоновки

Стандартная компоновка не обязательна.

Некоторые режимы используют части заголовочного символа не по стандартному назначению для достижения лучшей эффективности сжатия.

Такие случаи задокументированы в страницах этих режимов сжатия.

Индекс Режима Сжатия и Код #1

Код #1 не всегда соответствует индексу режима сжатия. JSSC кодирует индекс режима сжатия в весь Заголовочный Символ.

Например, когда Код #1 равен 00, но Код #2 не равен 00 — это соответствует Режиму Сжатия 06, а не 00.

В данном случае это происходит из-за того, что Режим Сжатия 06 сохраняет либо 06, либо 00 в Код #1, смотря на тип входных данных.

Соответственно, когда Код #1 равен 00 и Код #2 тоже равен 00 — это соответствует Режиму Сжатия 00.