¿Cómo se ve un encabezado zlib?

Resuelto unixman83 asked hace 12 años • 6 respuestas

En mi proyecto necesito saber cómo zlibse ve un encabezado. He oído que es bastante simple pero no puedo encontrar ninguna descripción del encabezado zlib.

Por ejemplo, ¿contiene un número mágico?

unixman83 avatar Jan 29 '12 08:01 unixman83
Aceptado

encabezados mágicos zlib

78 01 - No Compression/low
78 5E - Fast Compression
78 9C - Default Compression
78 DA - Best Compression 
VahidN avatar Jun 18 '2013 19:06 VahidN

Enlace al RFC

0   1
+---+---+
|CMF|FLG|
+---+---+

CMF (Método de compresión y banderas) Este byte se divide en un método de compresión de 4 bits y un campo de información de 4 bits según el método de compresión.

bits 0 to 3  CM     Compression method
bits 4 to 7  CINFO  Compression info

CM (Método de compresión) Identifica el método de compresión utilizado en el archivo. CM = 8 denota el método de compresión "desinflado" con un tamaño de ventana de hasta 32K. Este es el método utilizado por gzip, PNG y casi todo lo demás. CM = 15 está reservado.

CINFO (Información de compresión) Para CM = 8, CINFO es el logaritmo de base 2 del tamaño de ventana LZ77, menos ocho (CINFO=7 indica un tamaño de ventana de 32K). En esta versión de la especificación no se permiten valores de CINFO superiores a 7. CINFO no está definido en esta especificación para CM distinto de 8.

En la práctica, esto significa que el primer byte es casi siempre 78(hexadecimal).

FLG (FLaGs) Este byte de bandera se divide de la siguiente manera:

bits 0 to 4  FCHECK  (check bits for CMF and FLG)
bit  5       FDICT   (preset dictionary)
bits 6 to 7  FLEVEL  (compression level)

El valor FCHECK debe ser tal que CMF y FLG, cuando se ven como un entero sin signo de 16 bits almacenado en orden MSB (CMF*256 + FLG), sean múltiplos de 31.

FLEVEL (Nivel de compresión) Estos indicadores están disponibles para su uso con métodos de compresión específicos. El método "deflate" ( CM = 8) establece estas banderas de la siguiente manera:

        0 - compressor used fastest algorithm
        1 - compressor used fast algorithm
        2 - compressor used default algorithm
        3 - compressor used maximum compression, slowest algorithm
0xbadc0de avatar Jan 29 '2012 01:01 0xbadc0de

Encabezados ZLIB/GZIP

Level | ZLIB  | GZIP 
  1   | 78 01 | 1F 8B 
  2   | 78 5E | 1F 8B 
  3   | 78 5E | 1F 8B 
  4   | 78 5E | 1F 8B 
  5   | 78 5E | 1F 8B 
  6   | 78 9C | 1F 8B 
  7   | 78 DA | 1F 8B 
  8   | 78 DA | 1F 8B 
  9   | 78 DA | 1F 8B 

Deflate no tiene encabezados comunes

Cttr avatar Apr 02 '2017 15:04 Cttr