Я пытаюсь научиться читать спецификации.Давайте посмотрим, что получится после попытки сжатия: 1) пустой буфер и 2) восклицательный знак:
>>> zlib.compress(b'', 0)
b'x\x01\x01\x00\x00\xff\xff\x00\x00\x00\x01'
>>> zlib.compress(b'!', 0)
b'x\x01\x01\x01\x00\xfe\xff!\x00"\x00"'
До сих пор я обнаружил, что x\x01
- это магический формат, говорящий нам, что мы ищемна несжатом образце zlib.Тогда есть \x01
, который я не могу интерпретировать (я полагаю, это означает, что «следует несжатый блок») и \x01\x00
, который выглядит как длина буфера, после чего есть \xfe\xff
(который, похоже, будет уменьшаться, если я добавлю большебайт), затем данные и четыре байта, которые кажутся контрольной суммой Адлера.
Теперь мой вопрос: как я могу узнать, что означают третий и следующие четыре байта?
Кроме того, есть ли способ пропустить контрольную сумму Адлера и при этом произвести что-то, что zlib.decompress()
может обработать?Другими словами, существует ли более короткая минимальная выборка буфера Zlib?