Extraer archivos PAX

Trabajos ilimitados. Tamaños de archivo de hasta 2,5 GB. Gratis, para siempre.

Privado y seguro

Todo sucede en tu navegador. Tus archivos nunca tocan nuestros servidores.

Ultrarrápido

Sin subidas, sin esperas. Convierte en el momento en que sueltas un archivo.

Realmente gratis

No se requiere cuenta. Sin costos ocultos. Sin trucos de tamaño de archivo.

¿Qué es el formato PAX?

Portable Archive eXchange

LZH es un formato de archivo de compresión de datos sin pérdida que lleva el nombre de Lempel-Ziv-Huffman, los algoritmos en los que se basa. Fue lanzado por primera vez en 1987 por Haruyasu Yoshizaki como una mejora sobre los formatos de compresión anteriores LZ77 y LZ78 desarrollados por Abraham Lempel y Jacob Ziv a fines de la década de 1970. LZH proporcionó índices de compresión más eficientes al tiempo que permitía una descompresión rápida.

Los algoritmos de compresión principales utilizados en LZH están basados en diccionarios, aprovechando los datos vistos anteriormente para codificar de forma más compacta los datos futuros. El codificador mantiene un búfer de ventana deslizante de los datos procesados más recientemente. Cuando se encuentran nuevos datos, el codificador busca la secuencia coincidente más larga en la ventana deslizante. Si se encuentra una coincidencia, los datos se codifican como una referencia a la posición y longitud de la ventana coincidente, en lugar de los datos literales. Esta referencia normalmente consume menos espacio que el contenido original.

LZ77, utilizado como base para LZH, tiene un bucle de codificación que se ve así: 1. Buscar en la ventana deslizante la coincidencia más larga con la entrada próxima 2. Salida (desplazamiento, longitud) par que se refiere a la coincidencia 3. Si no se encuentra ninguna coincidencia, generar un byte literal 4. Mover la ventana hacia adelante por la longitud de la coincidencia

En 1986, Terry Welch publicó un algoritmo LZW mejorado que adaptó el trabajo de LZ78. Utilizó números de índice en un diccionario de cadenas para lograr más densidad que LZ77. Al año siguiente, se lanzó LZH, incorporando el enfoque de diccionario deslizante LZ77 pero agregando la codificación Huffman en los símbolos LZ77 como un paso adicional para mejorar los índices de compresión.

La codificación Huffman asigna secuencias de bits cortas a símbolos de uso frecuente y secuencias más largas a símbolos raros. En LZH, los posibles símbolos son bytes literales, marcadores de fin de bloque y referencias coincidentes en el diccionario de ventana deslizante. El modelo de codificación Huffman se calcula de forma única para cada bloque de datos en función de la distribución de frecuencia de símbolos de ese bloque. A las referencias coincidentes más frecuentes se les asignan códigos de bits más cortos. Este paso de codificación de entropía se aplica después de la coincidencia con la ventana deslizante.

La descompresión analiza los códigos Huffman de longitud variable de la secuencia de entrada, traduciéndolos de nuevo a bytes literales y referencias coincidentes. Las referencias se resuelven mirando hacia atrás en el búfer de ventana en los datos decodificados, copiando la coincidencia en la salida. La ventana se desliza hacia adelante después de cada símbolo. La descompresión es rápida, ya que no se requiere búsqueda de coincidencias.

Los archivos LZH contienen una serie de bloques, cada uno comprimido independientemente con este modelo LZ77+Huffman. Los bloques separados permiten el acceso aleatorio y la recuperación de errores. Cada bloque comienza con un encabezado que almacena las tablas de codificación Huffman necesarias para decodificar los datos de ese bloque.

El formato LZH estándar permite un tamaño de ventana deslizante de 13 bits, u 8192 bytes. La ventana normalmente se inicializa con todos los bytes cero al inicio de cada bloque. No se utiliza un diccionario preestablecido, solo datos previamente comprimidos. Las referencias coincidentes están limitadas a una longitud máxima de 256 bytes.

Nelson H.F. Beebe extendió LZH para admitir tamaños de ventana deslizante arbitrariamente grandes, llamando a su formato LZHXa. Los tamaños de ventana están restringidos a potencias de 2, siendo comunes 2^15 (32768) y 2^16 (65536) bytes. Aumentar la ventana mejora la compresión a medida que se buscan más datos del historial, a costa de una codificación más lenta y un mayor uso de memoria.

LZH incluye sumas de comprobación para validar la integridad de los datos. Cada bloque termina con un código CRC de 16 bits. Los archivos multiarchivo almacenan un CRC adicional para cada archivo completo. La mayoría de las implementaciones utilizan CRC-16 con el polinomio x^16 + x^15 + x^2 + 1, pero algunas utilizan CRC-16-CCITT.

Los archivos LZH comprimidos utilizan convencionalmente la extensión de archivo .lzh. El formato tuvo una mayor adopción en Japón, con una popularidad máxima a principios de la década de 1990, ya que competía con ZIP y ARJ. Evolucionó un estándar informal conocido como LHA, utilizado por los populares archivadores LArc y LHarc. Agregó soporte para comentarios, marcas de tiempo, contraseñas y archivos multiarchivo.

Las principales ventajas de LZH eran sus índices de compresión más altos en comparación con ZIP, además de una descompresión rápida. Sin embargo, a mediados de la década de 1990, ZIP ganó popularidad y desplazó a la mayoría de los demás formatos. La rápida adopción de ZIP como estándar en Windows, además del soporte de bibliotecas y herramientas multiplataforma, lo llevó a dominar el mercado de compresión sin pérdida.

Hoy en día, LZH rara vez se utiliza fuera de Japón y el este de Asia. Los nuevos formatos de compresión como bzip2, LZMA y otros ofrecen índices de compresión significativamente mejores. Algunas aplicaciones heredadas aún pueden encontrar archivos .lzh, pero se recomiendan ZIP, 7z o xz modernos para el archivo. Existen herramientas de código abierto como lhasa para extraer archivos .lzh antiguos.

En resumen, LZH combinó de forma innovadora la codificación de diccionario Lempel-Ziv con la reducción de bits Huffman para lograr una compresión de última generación cuando se introdujo. Tuvo una breve adopción, especialmente en Japón, antes de ser superado por el estándar ZIP. Pero jugó un papel importante en la historia de la compresión de datos y el desarrollo de formatos de archivo modernos. LZH mostró técnicas como diccionarios de ventanas deslizantes y codificación de entropía de símbolos que siguen siendo fundamentales para la forma en que comprimimos datos de manera eficiente.

La compresión de archivos reduce la redundancia para que la misma información ocupe menos bits. El límite superior de hasta dónde se puede llegar está gobernado por la teoría de la información: para la compresión sin pérdidas, el límite es la entropía de la fuente (véase el teorema de codificación de fuente y su artículo original de 1948 “Una teoría matemática de la comunicación”). Para la compresión con pérdidas, el equilibrio entre la tasa y la calidad se captura mediante la teoría de la tasa-distorsión.

Dos pilares: modelado y codificación

La mayoría de los compresores tienen dos etapas. Primero, un modelo predice o expone la estructura de los datos. Segundo, un codificador convierte esas predicciones en patrones de bits casi óptimos. Una familia clásica de modelado es Lempel-Ziv: LZ77 (1977) y LZ78 (1978) detectan subcadenas repetidas y emiten referencias en lugar de bytes sin procesar. En el lado de la codificación, la codificación de Huffman (véase el artículo original de 1952) asigna códigos más cortos a los símbolos más probables. La codificación aritmética y la codificación por rangos son alternativas más detalladas que se acercan más al límite de la entropía, mientras que los modernos Sistemas Numéricos Asimétricos (ANS) logran una compresión similar con implementaciones rápidas basadas en tablas.

Qué hacen realmente los formatos comunes

DEFLATE (utilizado por gzip, zlib y ZIP) combina LZ77 con la codificación de Huffman. Sus especificaciones son públicas: DEFLATE RFC 1951, envoltura zlib RFC 1950, y formato de archivo gzip RFC 1952. Gzip está diseñado para la transmisión y explícitamente no intenta proporcionar acceso aleatorio. Las imágenes PNG estandarizan DEFLATE como su único método de compresión (con una ventana máxima de 32 KiB), según la especificación de PNG “Método de compresión 0… deflate/inflate… como máximo 32768 bytes” y W3C/ISO PNG 2ª Edición.

Zstandard (zstd): un compresor de propósito general más nuevo diseñado para altas relaciones de compresión con una descompresión muy rápida. El formato está documentado en RFC 8878 (también espejo HTML) y la especificación de referencia en GitHub. Al igual que gzip, el marco básico no tiene como objetivo el acceso aleatorio. Uno de los superpoderes de zstd son los diccionarios: pequeñas muestras de su corpus que mejoran drásticamente la compresión en muchos archivos pequeños o similares (véase documentación del diccionario python-zstandard y el ejemplo práctico de Nigel Tao). Las implementaciones aceptan diccionarios tanto “no estructurados” como “estructurados” (discusión).

Brotli: optimizado para contenido web (por ejemplo, fuentes WOFF2, HTTP). Mezcla un diccionario estático con un núcleo de entropía+LZ similar a DEFLATE. La especificación es RFC 7932, que también señala una ventana deslizante de 2WBITS−16 con WBITS en [10, 24] (1 KiB−16 B hasta 16 MiB−16 B) y que no intenta el acceso aleatorio. Brotli a menudo supera a gzip en texto web mientras se decodifica rápidamente.

Contenedor ZIP: ZIP es un archivo de ficheros que puede almacenar entradas con varios métodos de compresión (deflate, store, zstd, etc.). El estándar de facto es la APPNOTE de PKWARE (véase APPNOTE portal, una copia alojada, y resúmenes de LC Formato de archivo ZIP (PKWARE) / ZIP 6.3.3).

Velocidad vs. relación: dónde se sitúan los formatos

LZ4 se centra en la velocidad bruta con relaciones modestas. Véase su página del proyecto („compresión extremadamente rápida“) y formato de trama. Es ideal para cachés en memoria, telemetría o rutas calientes donde la descompresión debe ser cercana a la velocidad de la RAM.

XZ / LZMA buscan la densidad (grandes relaciones) con una compresión relativamente lenta. XZ es un contenedor; el trabajo pesado lo realiza normalmente LZMA/LZMA2 (modelado tipo LZ77 + codificación por rangos). Véase formato de archivo .xz, la especificación de LZMA (Pavlov), y las notas del kernel de Linux sobre XZ Embedded. XZ suele comprimir más que gzip y a menudo compite con los códecs modernos de alta relación, pero con tiempos de codificación más lentos.

bzip2 aplica la Transformada de Burrows-Wheeler (BWT), move-to-front, RLE y codificación de Huffman. Suele ser más pequeño que gzip pero más lento; véase el manual oficial y las páginas del manual (Linux).

Ventanas, bloques y acceso aleatorio

El „tamaño de la ventana“ importa. Las referencias de DEFLATE solo pueden mirar hacia atrás 32 KiB (RFC 1951 y el límite de 32 KiB de PNG señalado aquí). La ventana de Brotli varía de aproximadamente 1 KiB a 16 MiB (RFC 7932). Zstd ajusta la ventana y la profundidad de búsqueda por nivel (RFC 8878). Los flujos básicos de gzip/zstd/brotli están diseñados para la decodificación secuencial; los formatos base no prometen acceso aleatorio, aunque los contenedores (por ejemplo, índices tar, tramas fragmentadas o índices específicos del formato) pueden superponerlo.

Sin pérdidas vs. con pérdidas

Los formatos anteriores son sin pérdidas: se pueden reconstruir los bytes exactos. Los códecs de medios suelen ser con pérdidas: descartan detalles imperceptibles para alcanzar tasas de bits más bajas. En imágenes, el JPEG clásico (DCT, cuantificación, codificación de entropía) está estandarizado en ITU-T T.81 / ISO/IEC 10918-1. En audio, MP3 (MPEG-1 Layer III) y AAC (MPEG-2/4) se basan en modelos perceptuales y transformadas MDCT (véase ISO/IEC 11172-3, ISO/IEC 13818-7, y un resumen de MDCT aquí). Con y sin pérdidas pueden coexistir (por ejemplo, PNG para activos de interfaz de usuario; códecs web para imágenes/vídeo/audio).

Consejos prácticos

  • Elija para el trabajo. Texto web y fuentes: brotli. Archivos generales y copias de seguridad: zstd (gran velocidad de descompresión y niveles para intercambiar tiempo por relación). Tuberías y telemetría ultrarrápidas: lz4. Máxima densidad para archivos a largo plazo donde el tiempo de codificación está bien: xz/LZMA.
  • ¿Archivos pequeños? Entrene y envíe diccionarios con zstd (documentación) / (ejemplo). Pueden reducir drásticamente docenas de objetos pequeños y similares.
  • Interoperabilidad. Al intercambiar varios archivos, prefiera un contenedor (ZIP, tar) más un compresor. La APPNOTE de ZIP define los ID de método y las características; véase PKWARE APPNOTE y resúmenes de LC aquí.
  • Mida con sus datos. Las relaciones y las velocidades varían según el corpus. Muchos repositorios publican puntos de referencia (por ejemplo, el README de LZ4 cita el corpus de Silesia aquí), pero siempre valide localmente.

Referencias clave (inmersiones profundas)

Teoría: Shannon 1948 · Tasa-distorsión · Codificación: Huffman 1952 · Codificación aritmética · Codificación por rangos · ANS. Formatos: DEFLATE · zlib · gzip · Zstandard · Brotli · Trama LZ4 · Formato XZ. Pila BWT: Burrows–Wheeler (1994) · manual de bzip2. Medios: JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.

En resumen: elija un compresor que se ajuste a sus datos y restricciones, mida con entradas reales y no olvide las ganancias de los diccionarios y el entramado inteligente. Con la combinación adecuada, puede obtener archivos más pequeños, transferencias más rápidas y aplicaciones más ágiles, sin sacrificar la corrección o la portabilidad.

Preguntas Frecuentes

¿Qué es la compresión de archivos?

La compresión de archivos es un proceso que reduce el tamaño de un archivo o archivos, típicamente para ahorrar espacio de almacenamiento o acelerar la transmisión a través de una red.

¿Cómo funciona la compresión de archivos?

La compresión de archivos funciona identificando y eliminando la redundancia en los datos. Utiliza algoritmos para codificar los datos originales en un espacio menor.

¿Cuáles son los diferentes tipos de compresión de archivos?

Los dos tipos principales de compresión de archivos son la compresión sin pérdida y la compresión con pérdida. La compresión sin pérdida permite restaurar perfectamente el archivo original, mientras que la compresión con pérdida permite una reducción de tamaño más significativa a costa de alguna pérdida en la calidad de los datos.

¿Cuál es un ejemplo de una herramienta de compresión de archivos?

Un ejemplo popular de una herramienta de compresión de archivos es WinZip, que admite varios formatos de compresión incluyendo ZIP y RAR.

¿La compresión de archivos afecta la calidad de los archivos?

Con la compresión sin pérdida, la calidad permanece sin cambios. Sin embargo, con la compresión con pérdida, puede haber una disminución notable en la calidad, ya que elimina datos menos importantes para reducir de manera más significativa el tamaño del archivo.

¿Es segura la compresión de archivos?

Sí, la compresión de archivos es segura en términos de integridad de datos, especialmente con la compresión sin pérdida. Sin embargo, como en todos los archivos, los archivos comprimidos pueden ser objeto de malware o virus, por lo que siempre es importante tener un software de seguridad de confianza en funcionamiento.

¿Qué tipos de archivos se pueden comprimir?

Casi todos los tipos de archivos se pueden comprimir, incluyendo archivos de texto, imágenes, audio, video y archivos de software. Sin embargo, el nivel de compresión alcanzable puede variar significativamente entre los tipos de archivos.

¿Qué se entiende por un archivo ZIP?

Un archivo ZIP es un tipo de formato de archivo que utiliza compresión sin pérdida para reducir el tamaño de uno o varios archivos. Varios archivos en un archivo ZIP se agrupan efectivamente en un solo archivo, lo que también facilita la compartición.

¿Puedo comprimir un archivo ya comprimido?

Técnicamente, sí, aunque la reducción de tamaño adicional podría ser mínima o incluso contraproducente. Comprimir un archivo ya comprimido a veces aumenta su tamaño debido a los metadatos agregados por el algoritmo de compresión.

¿Cómo puedo descomprimir un archivo?

Para descomprimir un archivo, generalmente necesitas una herramienta de descompresión, como WinZip o 7-Zip. Estas herramientas pueden extraer los archivos originales del formato comprimido.