В моем проекте я должен знать что a zlib
заголовок похож. Я услышал, что это довольно просто, но я не могу найти описание zlib заголовка.
Например, это содержит магическое число?
Заголовок 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, если оба передают контрольную сумму? На практике, хотя, нет никаких действительных заголовков, где эта ситуация происходит, таким образом, мы не должны волноваться об этом.)