Заголовочный Символ (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.