begin process at 2010 02 10 08:23:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > CONVERSION ASCII-8 - BINAIRE

CONVERSION ASCII-8 - BINAIRE


 Description

Salut;
Voici une classe à but pédagogique qui convertit un "string ascii" vers un "string binaire".
En .Net, la classe String stocke les données en Unicode (le format est propre à .net). Ce format est toutefois "Ascii Compatible" comme l'UTF-8. Voilà pourquoi je me permets de dire "string ascii".

Ce code permettra aux débutants de voir l'utilité des opérateurs binaires. En effet, je m'en sers ici beaucoup pour la conversion.
Le code est aussi très bien commenté.

Source

  • using System;
  • using System.Text;
  • namespace AsciiBinary
  • {
  • class AsciiBinaryConverter
  • {
  • #region BinaryToAscii
  • public static string BinaryToAscii(string bin, bool display)
  • {
  • //chaine contenant le texte final
  • string ascii = null;
  • //charAsciiCode : code ascii du caractère 8 bits
  • //j : indicateur pour les opérations binaires
  • //j : 10000000 (en binaire)
  • int charAsciiCode = 0, j = 1 << 7;
  • //on s'assure que la taille est un multiple de 8
  • if ((bin.Length % 8) != 0) throw new Exception("La longueur de la chaine n'est pas divisible par huit.");
  • //on parcoure le tableau
  • for (int i = 0; i < bin.Length; i++)
  • {
  • //si on rencontre un 1 alors...
  • if (bin[i] == '1')
  • {
  • //l'opérateur binaire | (ou)
  • //permet de placer le bit de j sur charAsciiCode
  • //exemple :
  • //j : 00100000
  • //charAsciiCode : 10000000
  • //alors j | charAsciiCode = 10100000
  • charAsciiCode = j | charAsciiCode;
  • }
  • //on s'assure que le caractère n'est pas différent de 1 et de 0
  • else if (bin[i] != '0') throw new Exception("Seulement les caractères 1 et 0 sont acceptés.");
  • //à chaque 8 caractères analysés (dans le string bin)...
  • if (((i+1) % 8) == 0 && i > 0)
  • {
  • //on transforme charAsciiCode en carctère et on l'ajoute à la chaine finale (ascii)
  • ascii += (char)charAsciiCode;
  • //si diplay == true, on affiche le code binaire + le carctère
  • if (display) Console.WriteLine(bin.Substring(i - 7, 8) + " : " + (char)charAsciiCode);
  • //j est remis sur 128 : 10000000 (en binaire)
  • j = 1 << 7;
  • //charAsciiCode est remis à 0 : 00000000 (en binaire)
  • charAsciiCode = 0;
  • }
  • //sinon on décale le bit de j vers la droite
  • //exemple :
  • //j initiale : 01000000
  • //j après >> 1 : 00100000
  • else j = j >> 1;
  • }
  • //retourne la chaine ascii
  • return ascii;
  • }
  • public static string BinaryToAscii(string bin)
  • {
  • return BinaryToAscii(bin, false);
  • }
  • #endregion
  • #region AsciiToBinary
  • public static string AsciiToBinary(string ascii, bool display)
  • {
  • //chaine contenant le code binaire final
  • string binary = null;
  • //j : indicateur pour les opérations binaires
  • int j = 0;
  • //on parcourt la chaine ascii
  • for (int i = 0; i < ascii.Length; i++)
  • {
  • //j est mis sur 128 : 10000000 (en binaire)
  • j = 1 << 7;
  • if(display) Console.Write(ascii[i] + " :\t");
  • //durant cette boucle, le bit 1 de j sera déplacé vers la droite
  • for (int k = 0; k < 8; k++)
  • {
  • //si l'opérateur & (AND) est différent de 0
  • if ((ascii[i] & j) != 0)
  • {
  • //ajouter le caractère 1 à la chaine binary
  • if (display) Console.Write("1");
  • binary += "1";
  • }
  • //sinon
  • else
  • {
  • //ajouter le caractère 0 à la chaine binary
  • if (display) Console.Write("0");
  • binary += "0";
  • }
  • //on décale le bit de j vers la droite
  • //exemple :
  • //j initiale : 01000000
  • //j après >> 1 : 00100000
  • j = j >> 1;
  • }
  • if (display) Console.WriteLine();
  • }
  • //on retourne le code binaire de ascii sous forme de string
  • return binary;
  • }
  • public static string AsciiToBinary(string ascii)
  • {
  • return AsciiToBinary(ascii, false);
  • }
  • #endregion
  • }
  • }
using System;
using System.Text;

namespace AsciiBinary
{
    class AsciiBinaryConverter
    {
        #region BinaryToAscii
        public static string BinaryToAscii(string bin, bool display)
        {
            //chaine contenant le texte final
            string ascii = null;
            //charAsciiCode : code ascii du caractère 8 bits
            //j : indicateur pour les opérations binaires
            //j : 10000000 (en binaire)
            int charAsciiCode = 0, j = 1 << 7;
            //on s'assure que la taille est un multiple de 8
            if ((bin.Length % 8) != 0) throw new Exception("La longueur de la chaine n'est pas divisible par huit.");
            //on parcoure le tableau
            for (int i = 0; i < bin.Length; i++)
            {
                //si on rencontre un 1 alors...
                if (bin[i] == '1')
                {
                    //l'opérateur binaire | (ou)
                    //permet de placer le bit de j sur charAsciiCode
                    //exemple :
                        //j : 00100000
                        //charAsciiCode : 10000000
                        //alors j | charAsciiCode = 10100000
                    charAsciiCode = j | charAsciiCode;
                }
                //on s'assure que le caractère n'est pas différent de 1 et de 0
                else if (bin[i] != '0') throw new Exception("Seulement les caractères 1 et 0 sont acceptés.");
                //à chaque 8 caractères analysés (dans le string bin)...
                if (((i+1) % 8) == 0 && i > 0)
                {
                    //on transforme charAsciiCode en carctère et on l'ajoute à la chaine finale (ascii)
                    ascii += (char)charAsciiCode;
                    //si diplay == true, on affiche le code binaire + le carctère
                    if (display) Console.WriteLine(bin.Substring(i - 7, 8) + " : " + (char)charAsciiCode);
                    //j est remis sur 128 : 10000000 (en binaire)
                    j = 1 << 7;
                    //charAsciiCode est remis à 0 : 00000000 (en binaire)
                    charAsciiCode = 0;                    
                }
                //sinon on décale le bit de j vers la droite
                //exemple :
                    //j initiale : 01000000
                    //j après >> 1 : 00100000
                else j = j >> 1;
            }
            //retourne la chaine ascii
            return ascii;
        }
        public static string BinaryToAscii(string bin)
        {
            return BinaryToAscii(bin, false);
        }
        #endregion

        #region AsciiToBinary
        public static string AsciiToBinary(string ascii, bool display)
        {
            //chaine contenant le code binaire final
            string binary = null;
            //j : indicateur pour les opérations binaires
            int j = 0;
            //on parcourt la chaine ascii
            for (int i = 0; i < ascii.Length; i++)
            {
                //j est mis sur 128 : 10000000 (en binaire)
                j = 1 << 7;
                if(display) Console.Write(ascii[i] + " :\t");
                //durant cette boucle, le bit 1 de j sera déplacé vers la droite
                for (int k = 0; k < 8; k++)
                {
                    //si l'opérateur & (AND) est différent de 0
                    if ((ascii[i] & j) != 0)
                    {
                        //ajouter le caractère 1 à la chaine binary
                        if (display) Console.Write("1");
                        binary += "1";
                    }
                    //sinon
                    else
                    {
                        //ajouter le caractère 0 à la chaine binary
                        if (display) Console.Write("0");
                        binary += "0";
                    }
                    //on décale le bit de j vers la droite
                    //exemple :
                        //j initiale : 01000000
                        //j après >> 1 : 00100000
                    j = j >> 1;
                }
                if (display) Console.WriteLine();
            }
            //on retourne le code binaire de ascii sous forme de string
            return binary;
        }
        public static string AsciiToBinary(string ascii)
        {
            return AsciiToBinary(ascii, false);
        }
        #endregion
    }
}



 Conclusion

Des lectures interessantes :
http://developpeur.journaldunet.com/tutoriel/the o/031126theo_bit1a.shtml (Opérateurs binaires)
http://developpeur.journaldunet.com/tuto riel/theo/031126theo_bit1a.shtml (ASCII -7)
http://fr.wikipedia.org/wiki/ISO_8859-1 (Latin-1 ASCII ÉTENDUE)
http://www.labo-dotnet.com/articles/Cshar p/Unicode-et-dotNET/0/1720.aspx (Unicode et .net)
....


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) RESOURCEBINDER : INJECTER ET EXTRAIRE DES RESSOURCES
Source .NET (Dotnet) SQLMANAGER : FACILITE L'ACCÈS À UNE BASE DE DONNÉE MS SQL
Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTAGE PRÉDÉFINI ET PERSONNALISÉ GRÂCE À LA COMPILATION DY...
Source avec Zip Source avec une capture Source .NET (Dotnet) PACMAN : ÉDITEUR DE NIVEAU
Source avec Zip Source avec une capture Source .NET (Dotnet) PLUGIN PROGRAMME EXTENSIBLE GRÂCE AUX MODULES

 Sources de la même categorie

Source .NET (Dotnet) GREP POUR WINDOWS par Warny
Source .NET (Dotnet) PARSER DE NODE XML ALTERNATIF par bubbathemaster
Source avec Zip Source .NET (Dotnet) TEXTBOX SÉQUENCE DE TOUCHES. par vbmaniac8
Source avec Zip Source .NET (Dotnet) WINDOWS FORMS VALIDATORS par sebmafate
Source avec Zip Source .NET (Dotnet) DATE EN TOUTE LETTRE (ARABE) par moi2007

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLECONV - APPLICATION DE CONVERSION MONÉTAIRE AVEC TAUX E... par Jeffrey_
Source avec Zip Source avec une capture Source .NET (Dotnet) ASCII ART MAKER - CONVERSION IMAGE - TEXTE (ASCII ART) par MaxSoldier
Source avec Zip Source .NET (Dotnet) CONVERSION EN HÉXA,DÉCIMAL,OCTAL,BINAIRE par Radeon048
Source avec Zip Source .NET (Dotnet) UNE DLL QUI CONTIENT TOUTES LES METHODES DE CONVERSION D'UN ... par lino03
Source .NET (Dotnet) TRANSFORMATION ENTIER-BINAIRE par bucherb

Commentaires et avis

Commentaire de k_hammami le 12/03/2007 12:59:05

Salut,se sont très utiles vos codes, bravo badr. J'ai comme même quelque problèmes que j'aime bien à vos poser. L'histoire consiste à la manipulation des fichiers codés avec le code page 710 (transparent arabic).j'ai essayé de les lire convenablement ,mais sans résultat.j'ai pensé à les convertir en ascii ou en binaire pour les lire par la suite dans un code page plus connu comme le 720.ce problème me pose beaucoup de soucie dans mon travaille. merci et bon courage.

Commentaire de jadoui le 24/11/2008 11:54:51

je veux selection sur datagridview le premier colonne et ajouter dans le textbox

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Conversion ASCII vers caractere [ par f4bkb ] Bonjour,je suis nouveau sur ce forum et novice dans ce language de prog. Pour débuter je voudrais developper une petite application qui converti un in conversion string en int, byte, hexa [ par vinc524 ] C#bonjour, je cherche désespérémment un moyen pour convertir une chaine de caractere string en hexadecimal. En fait je voudrais le code ascii d'un car conversion [ par yassinchaouki ] Bonjour,Est ce qu'il y a une fonction en c# qui&nbsp;fait la converion du code html en code ASCII&nbsp;ex:&amp;nbsp;&nbsp; (code htm&nbsp;de l'epace) c# --> Probleme conversion hexadecimal en binaire [ par julbuttt ] Bonjour, voila, dans mon code je recois de l'hexadecimal que je transforme en binaire, et le probleme est que si j'ai au debut de l'hexa des zéros pui lire un fichier binaire [ par ultrafil ] Salut, j'ai besoin de lire des données dans un fichier binaire.Mon problème c'est que je n'arrive pas à faire de conversion en byte[]Je m'explique, j' conversion int en ASCII [ par jesaipa_1 ] Slt a tous, je n'arrive pas a renvoyer le code ascii d'un int Merci. Conversion manuelle d'un nombre en binaire, décimal et hexadécimal, Aidez-moi, je débute... [ par Acidkepler ] Bonjour, je dois convertir un nombre que j'entre dans un textBox, soit, &#224; l'aide de boutons, en binaire, d&#233;cimal ou h&#233;xad&#233;cimal, s conversion [ par RM50Man ] Bonjour,Comment convertir ce code de c# en vb if ( m.Msg == WM_KEYDOWN &amp;&amp; m.WParam == (IntPtr)Keys.Escape) {le convertisseur me donne ca </F Le code ASCII [ par yassinchaouki ] Bonjour,Est ce qu'il y a une fonction en C# qui retourne le code ASCII d'un caract&#233;re pass&#233; en param&#233;tre.Cordialement. j'ai besoin d'une aide concernant la conversion d'un fichier html en un fichier XML en se basant sur le langage C#. [ par yassinchaouki ] yassin


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,123 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales