Compression fichiers algorithme huffman c

5/5 (2 avis)

Vue 15 813 fois - Téléchargée 2 012 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

Ajouter un commentaire Commentaires
xtremejames183 Messages postés 32 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 14 avril 2009
15 janv. 2010 à 22:58
Arf j'ai oublié correcteur orthographique de firefox est en anglais , en fait ce qu'on peut
CHAR As Human Messages postés 20 Date d'inscription vendredi 23 septembre 2005 Statut Membre Dernière intervention 10 juin 2010
14 janv. 2010 à 18:49
Tu serai pas un petit gars d'ASI INSA rouen par hasard toi ? ^^
Bien joué pour ta source, pour la portabilité du code tout ça...
Mais passe ta description dans un correcteur orthographique !^^

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.