На что похож zlib заголовок?

В моем проекте я должен знать что a zlib заголовок похож. Я услышал, что это довольно просто, но я не могу найти описание zlib заголовка.

Например, это содержит магическое число?

60
задан 6 October 2016 в 15:10

1 ответ

Заголовок ZLIB (как определено в [1 123] RFC1950) является 16-разрядным, значением с обратным порядком байтов. Это содержит эти поля от большинства до младшего значащего:

  • CINFO (биты 12-15)
    Указывает на размер окна как на питание два, от 0 (256 байтов) к 7 (32 768 байтов). Это обычно будет 7. Более высокие значения не позволяются.

  • CM (биты 8-11)
    метод сжатия. Только Выкачайте (8), позволяется.

  • FLEVEL (биты 6-7)
    Примерно указывает на уровень сжатия, от 0 (быстро/низко) к 3 (медленный/высокий)

  • FDICT (укусил 5)
    , Указывает, используется ли предварительно установленный словарь. Это обычно 0. 1 технически позволяется, но я не знаю ни о ком, Выкачивают форматы, которые определяют предварительно установленные словари.

  • FCHECK (биты 0-4)
    контрольная сумма А (5 битов, 0.. 31), чье значение вычисляется таким образом, что все значение делится 31 без остатка.

Как правило, только CINFO и FLEVEL поля могут быть свободно изменены, и FCHECK должен быть вычислен на основе окончательного значения.* Принимающий предварительно установленный словарь, нет никакого выбора в том, что содержат другие поля, таким образом, в общей сложности 32 возможных заголовка действительны. Здесь они:

      FLEVEL: 0       1       2       3
CINFO:
     0      08 1D   08 5B   08 99   08 D7
     1      18 19   18 57   18 95   18 D3
     2      28 15   28 53   28 91   28 CF
     3      38 11   38 4F   38 8D   38 CB
     4      48 0D   48 4B   48 89   48 C7
     5      58 09   58 47   58 85   58 C3
     6      68 05   68 43   68 81   68 DE
     7      78 01   78 5E   78 9C   78 DA

CINFO поле редко, если когда-нибудь, установленный компрессорами быть чем-нибудь кроме [1 120] (указание на максимальное окно 32 КБ), таким образом, единственные значения Вы, вероятно, будете видеть в дикой природе, четыре в нижнем ряду (начинающийся 78).

* (Вы могли бы задаться вопросом, существует ли небольшое количество дрейфа на значении [1 122] - это могло бы быть установлено или на 0 или на 31, если оба передают контрольную сумму? На практике, хотя, нет никаких действительных заголовков, где эта ситуация происходит, таким образом, мы не должны волноваться об этом.)

3
ответ дан 31 October 2019 в 16:42

Другие вопросы по тегам:

Похожие вопросы: