예제 #1
0
        // Création du code de Huffman à partir de l'arbre binaire
        public HuffmanCode createHuffman()
        {
            HuffmanCode hC = new HuffmanCode();
            byte        b  = new byte();

            hC.setCode(recursiveHuffman(hC.getCode(), _tree, b, 0));
            return(hC);
        }
예제 #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);
        }