CodeS-SourceS
Rechercher un code, un tuto, une réponse

Compression fichiers algorithme huffman c

Soyez le premier à donner votre avis sur cette source.

Vue 12 233 fois - Téléchargée 1 545 fois

Description

Voila , le code essaye de compresser les donnees selon l'algorithme de huffman en essayant de construire l'arbre du bas-en-haut (buttom-up) pour eviter toute recursivite.
la table des frequences est organisé en Heap (queue prioritaires) c'est a dire les carracteres les moins frequents sont en tete du tableau et sont fusionees entre eux pour donner un noeud pere et ainsi de suite jusqu'a ce que il ne reste qu'un seul noeud racine (root).
la table est ensuite transferer sur fichiers au format big-endian , dont voici le format du fichiers compresser:
    • magic : 2 octect ( 'H' 'F')
    • taille de la table : 4 octet
    • index du noeud racine dans la table: 2 octet
    • donnees compresser : taille variable

la qualite de compression est moyenne sinon mediocre , le meilleur taux de compression sont obtenus sur des fichers text , n'essayer pas de compresser des fichiers deja compresse , ca ne fait qu'augmenter encore la taille , ou de compresser des fichiers voulumineux , a la limite 10mega , puisque le programme essayera d'allouer de la memoire pour la taille totale du fichiers.

le programme ajoute l'extension ".huff" pour les fichiers compresses :
test.txt ==> test.txt.huff
il nya aucune suppression des donnees.

Source / Exemple :


SyCompressFile("Nom Fichiers"); //compression
 SyDecompressFile("Nom Fichier.huff"); //pour decompression

/* sinon zip file */

Conclusion :


le code compile sans probleme sous windows/unix */
pour windows j'ai inclus un projet VS2005
pour unix : cc -O2 sxhuffman.c -o huff

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.