¿Cómo se ve un encabezado zlib?
En mi proyecto necesito saber cómo zlib
se 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?
encabezados mágicos zlib
78 01 - No Compression/low
78 5E - Fast Compression
78 9C - Default Compression
78 DA - Best Compression
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
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