Exemplo n.º 1
0
 public void feedTree(TableFq tfq) // créee un arbre à partir d'une table de frèquence
 {
     _tree.Clear();
     foreach (KeyValuePair <byte, int> kVal in tfq.getTable())
     {
         _tree.Add(new Nodes(kVal));
     }
 }
Exemplo n.º 2
0
        bool Huffman.IPlugin.Decompress(ref Huffman.HuffmanData hf)
        {
            try
            {
                TableFq    tf     = new TableFq(hf.frequency);                                         // Création de la table de frèquence à partir des données d'entrée
                BinaryTree bnTree = new BinaryTree();                                                  // nouvel arbre binaire vide
                bnTree.feedTree(tf);                                                                   // initialisation de l'arbre avec la table de fréquence
                bnTree.computeTree();                                                                  //génération de l'arbre binaire final à partir des données qu'il contient
                HuffmanCode hfCode = new HuffmanCode();
                hfCode = bnTree.createHuffman();                                                       //génération d'un code huffman pour chaque byte différent des données d'entrée à l'aide de l'arbre binaire (stockage dans un dictionnaire)

                hf.uncompressedData = hfCode.decompress(hf.compressedData, hf.sizeOfUncompressedData); /* décompression à l'aide du code de Huffman. Stockage dans la structure HuffmanData
                                                                                                        * qui est échangée entre le plugin et le programme par le biais de MarshalByRefObject */
            }
            catch (Exception e)
            {
                return(false); // la décompression a échouée si une exception est levée
            }
            return(true);
        }