compres

Implementación Algoritmo de Huffman, código original de Salvador Pozo Coronado

Stars
8

Algoritmo de compresin de Huffman

Compresin de archivos usando el Algoritmo de Huffman, cdigo fuente original de Salvador Pozo Coronado (2000), con mnimas correcciones de Mariano Ruiz (2018-2021).

En el branch modo-debug est una version que agrega unas funciones que imprimen en el error stream (consola) la tabla de frecuencias, la codificacin Huffman usada, junto con una representacin en rbol binario (ver modo-debug#Ejecucin).

Cdigo fuente original en C++: link original (roto), web archive.

Cambios en esta versin:

  • Cdigo fue portado a C: mnimos cambios ya que el cdigo original en C++ no haca uso de programacin orientada a objetos, pero haca uso de referencias que no son compatibles con C.

  • Fix error en cmo se lea el archivo que causaba que no se pudiera usar para comprimir archivos binarios o con ms de 128 caracteres diferentes.

  • Archivos fuentes re-encodeados a UTF-8 en vez del viejo encoding ASCII ISO-8859-1, que haca in-leble los comentarios con caracteres diacrticos en cualquier editor moderno.

  • Tambin se agrega script para compilar con CMake ambos comandos compres y decompres:

    $ cmake . && make
    

Al tener CMake configurado puede ser compilado en cualquier plataforma (no solo *nix), y directamente importado en CLion. Los comandos tambin pueden ser instalados en /usr/local/bin una vez ejecutado cmake . con sudo make install.

De todos modos los comandos tambin pueden ser compilados solo con un compilador C como gcc:

$ cc compres.c -o compres
$ cc decompres.c -o decompres

Ejecucin

Una vez generados los ejecutables, para comprimir un archivo:

$ ./compres hello.txt hello.txt.compres

El archivo comprimido hello.txt.compres puede ser descomprimido luego con:

$ ./decompres hello.txt.compres hello.txt