Giter VIP home page Giter VIP logo

compres's Introduction

Algoritmo de compresión de Huffman

Compresión de archivos usando el Algoritmo de Huffman, código fuente original de Salvador Pozo Coronado (2000), con mínimas 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 codificación Huffman usada, junto con una representación en árbol binario (ver modo-debug#Ejecución).

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

Cambios en esta versión:

  • Código fue portado a C: mínimos cambios ya que el código original en C++ no hacía uso de programación orientada a objetos, pero hacía uso de referencias que no son compatibles con C.

  • Fix error en cómo se leía el archivo que causaba que no se pudiera usar para comprimir archivos binarios o con más de 128 caracteres diferentes.

  • Archivos fuentes re-encodeados a UTF-8 en vez del viejo encoding ASCII ISO-8859-1, que hacía in-leíble los comentarios con caracteres diacríticos en cualquier editor moderno.

  • También 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 también pueden ser instalados en /usr/local/bin una vez ejecutado cmake . con sudo make install.

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

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

Ejecución

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

compres's People

Contributors

mrsarm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.