Я посмотрел стандарт для zlib и похожий вопрос, опубликованный здесь .
Однако я изо всех сил пытаюсь понять, что делает DICTID
в zlib Заголовки представляют и содержат.
0 1 0 1 2 3 0 1 2 3
+---+---+ +---+---+---+---+ +=====================+ +---+---+---+---+
|CMF|FLG| | [DICTID] | |...compressed data...| | ADLER32 |
+---+---+ +---+---+---+---+ +=====================+ +---+---+---+---+
Из этого я мог только обнаружить, что следующий бит в DICTID
представляет, если файлы были разбиты на несколько разных файлов
0 1 2 3
+--------+--------+--------+--------+
|00000010|00001000|00000010|00001000|
+--------+--------+--------+--------+
^
|
+ 1 if not split/ 0 if there is multiple files
Также является DICTID
необязательным и является длина сжатых данных, указанная где-либо в заголовках?
Моя цель - собрать следующие сжатые данные:
# compressed data
b1 = b'\x78\x01\x7a\x3c\xd5\x28\xe3\xf1\x4e\xa7\x92\xff\x13\x01\x00\x00\x00\xff\xff'
b2 = b'\x03\x00\x20\x6f\x05\xf5'
stream = b1 + b2
в
\x78\x01\x7b\x3c\xd5\x28\xe3\xf1\x4e\xa7\x92\xff\x13\x01\x20\x6f\x05\xf5