Salut à tous !
Dans le cadre d'un projet, on doit réaliser un programme permettant de compresser un fichier.
Le travail demandé était d'écrire les fonctions burrows_wheeler, movetofront et huffman qu'on implantait dans un fichier main fourni
Voici l'archive contenant les fichiers nécessaires à la compilation du binaire huffman.
Pour compiler, je fais make huffman et ca génère un exécutable huffman.
Ensuite la commande :
génère fichier.encoded compressé
Code : Sélectionner tout - Visualiser dans une fenêtre à part huffman -e fichier
et :
génère fichier.decoded décompressé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part huffman -d fichier.encoded
Mon problème vient en fait du décodage. En fait celui-ci plante parfois (sur des textes longs) et retourne un résultat faux sur des textes avec un seul mot
Par
(L'encodage du movetofront n'est pas optimisé, car le fichier ne fait que 648 octets !)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ./huffman -e fichier Burrows-Wheeler transformation ..... 0.266933917999sec Move to Front encoding ............. 14.2474870682sec Huffman encoding ................... 0.0310549736023sec Compression rate achieved .......... 139%
Et pour décompresser :
Le problème se situe donc dans le décodage du movetofront apparemment
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ./huffman -d fichier.encoded Huffman decoding ........................... 0.00246000289917sec Fatal error: exception Invalid_argument("Char.chr")
Si j'essaye avec le fichier texte suivant contenant:
La décompression fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part essaiessai
Mais j'ai ça dans le fichier decoded :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ./huffman -d essai.encoded Huffman decoding ........................... 2.00271606445e-05sec Move to Front decoding ..................... 0.000401973724365sec Burrows-Wheeler inverse transformation ..... 0.00131607055664sec Resulting uncompressed file is in "essai.decoded"
Bon j'ai lu et relu plusieurs fois le fichier movetofront.ml, et tous les test internes marchent parfaitement ! Je ne vois pas d'où pourrait venir le problème car j'ai bien respecté toutes les contraintes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 essai esai
Merci d'avance pour votre aide
Partager