Как заставить zlib (или другую библиотеку) создать блок ДЕФЛЯЦИИ типа 01

#python #zip #zlib #deflate

Вопрос:

Я пишу СПУЩЕННЫЙ распаковщик (на Python) и хочу протестировать его с блоками типа 01 (т. Е. с фиксированным кодом Хаффмана в 3.2.6. RFC 1951.

Я знаю, что могу создать их сам, но я хотел бы протестировать их с помощью блоков, созданных каким-либо другим кодом, например zlib. Как я могу это сделать? До сих пор, по данным моего тестирования, zlib всегда создавал блоки типа 02 (т. е. динамические коды Хаффмана) или блоки типа 00 (не сжатые).

(В конечном счете это будет использоваться в коде распаковки)

Ответ №1:

Ну выяснил как: переходя strategy=zlib.Z_FIXED к compressobj

 import zlib

compressobj = zlib.compressobj(wbits=-zlib.MAX_WBITS, strategy=zlib.Z_FIXED)
compressed_stream = compressobj.compress(b'Some data')   compressobj.flush()