Exemple #1
0
        /// <summary>
        /// Lis un fichier et retourne le texte decode et un dictionnaire
        /// </summary>
        /// <param name="nomFichier">Nom du fichier a lire</param>
        /// <returns></returns>
        public static Decodage Decode(string nomFichier)
        {
            //  Initialisation
            TextReader tr       = new StreamReader(nomFichier);
            Decodage   resultat = new Decodage();
            string     tmp      = "";

            resultat.dico = new Dictionary <string, char>();
            string code;
            char   nChar;

            //  Parcours l'entête
            while (tr.Peek() > -1)
            {
                //  Vide la variable code
                code = string.Empty;
                //  écrit le caractère dans nChar
                nChar = (char)tr.Read();
                //  Si on lis le fanion on skip le fanion et on passe au texte
                if (tr.Peek() == '0')
                {
                    for (int i = 0; i < 7; i++)
                    {
                        tr.Read();
                    }
                    break;
                }
                //  On skip l'espace entre les caractère
                tr.Read();
                //  Tant qu'on a pas fini de lire le code
                while (tr.Peek() != ' ')
                {
                    //  Rajoute le code a la variable code
                    code += (char)tr.Read();
                }
                //  Insere la lettre et le code dans le dictionnaire
                resultat.dico.Add(code, nChar);
                tr.Read();
            }
            //  Parcours le texte encodé
            while (tr.Peek() > -1)
            {
                //  Rajoute le chiffre 1/0 dans tmp
                tmp += (char)tr.Read();
                //  Si ça correspond a un encodage d'une lettre
                if (resultat.dico.ContainsKey(tmp))
                {
                    //  Rajoute cette lettre au texte final
                    resultat.text += resultat.dico[tmp];
                    //  Renitialise tmp
                    tmp = "";
                }
            }
            tr.Close();
            return(resultat);
        }
Exemple #2
0
        /// <summary>
        /// Function principale qui permet de decoder un fichier
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnDecoder_Click(object sender, EventArgs e)
        {
            //  Initialisation
            string affichage   = string.Empty;
            string fichier     = tbxSource.Text;
            string fichierDest = tbxDestination.Text;
            string textDecode  = "";

            tbxAffichage.Text = "Decodage en cours veuillez patientez...";

            //  Appele la fonction de decodage
            Decodage decode = Decode(fichier);

            //  Ressort les valeurs dans des variables
            textDecode = decode.text;
            Dictionary <string, char> dico = decode.dico;

            //  Création du texte à afficher dans la textbox a partir du dictionnaire
            for (int i = 0; i < dico.Count; i++)
            {
                affichage += "Lettre : " + dico.ElementAt(i).Value;
                affichage += " Code : " + dico.ElementAt(i).Key;
                affichage += Environment.NewLine;
            }
            affichage += "\nVotre texte a été enregistré dans : " + fichierDest;

            //  Si un fichier du meme nom existe le supprime
            if (File.Exists(fichierDest))
            {
                File.Delete(fichierDest);
            }

            //  Ecrit le resultat dans le fichier demandé
            File.WriteAllText(fichierDest, textDecode);

            //  Affichage
            lblEntropie.Text   = "Entropie : Calcul Impossible";
            lblRedondance.Text = "Redondance (R=D-H) : Calcul Impossible";
            lblBitsAvant.Text  = (textDecode.Length * 8).ToString() + " bits";
            lblBitsApres.Text  = "Calcul Impossible";
            tbxAffichage.Text  = affichage;
        }