p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Inscrit en
    juin 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 33
    Points : 0
    Points
    0

    Par défaut Compression Algo Huffman

    Bonsoir ,
    je suis entrain de d’implémenter la compression d'un fichier texte à l'aide d'algo Huffman. après avoir construire l'arbre de huffman et dégager le code associé à chaque caractère c quoi l'étpe suivante ? et comment écrire en mémoire bit à bit?

  2. #2
    Expert Confirmé Sénior

    Avatar de Neckara
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    5 544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 5 544
    Points : 16 404
    Points
    16 404

    Par défaut

    Bonjour,

    On ne peut écrire en mémoire que octet par octet minimum.
    Par contre tu peux utiliser des mask pour ne modifier qu'un bit :

    Mettre un bit à 1 : variable |= 0x04.
    Mettre un bit à 0 : variable &= 0xFE.
    Tu as aussi des opérateurs de décalages de bits : 1 << 5 décale de 5 bits "vers la gauche", on obtient donc 32.
    On dit "chiffrer" pas "crypter" !

    On dit "bibliothèque" pas "librairie" !

    Ma page DVP : http://neckara.developpez.com/

  3. #3
    Expert Confirmé Sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    24 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 24 860
    Points : 36 092
    Points
    36 092

    Par défaut

    Ensuite, on cumule les opérateurs bit-à-bit avec les opérateurs de décalage:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <limits.h>
     
    void SetBit(unsigned char *tableau, size_t indexBit, int valeur)
    {
    	size_t indexByte = indexBit/CHAR_BIT, offsetBit=indexBit%CHAR_BIT;
    	unsigned char valeurBit;
     
    	/*Note: Je soustrais de CHAR_BIT pour indexer à partir du poids fort;
    	ça rend mieux quand on affiche des bytes consécutifs en binaire.*/
    	valeurBit = 1 << (CHAR_BIT - offsetBit -1);
     
    	if(valeur)
    		tableau[indexByte] |= valeurBit;
    	else
    		tableau[indexByte] &= ~valeurBit;
    }
    Après, pour écrire, il te suffit d'appeler SetBit() en incrémentant l'index à chaque fois.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [À télécharger] Compression de Huffman (HCD)
    Par pottiez dans le forum Téléchargez
    Réponses: 0
    Dernier message: 14/11/2010, 15h18
  2. Algo huffman semi adaptative et adaptative
    Par lili78 dans le forum Général Algorithmique
    Réponses: 4
    Dernier message: 15/04/2010, 14h25
  3. [Huffman|JAR] Compression de Huffman dans un jar => Ca sert à rien !
    Par ryosnake dans le forum Général Algorithmique
    Réponses: 7
    Dernier message: 12/02/2009, 17h29
  4. Algorithme de compression de Huffman, extention pour tout n.
    Par born_to_eat dans le forum Général Algorithmique
    Réponses: 5
    Dernier message: 30/10/2008, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo