begin process at 2012 05 27 06:17:29
  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 avec Zip Source avec une capture Source .NET (Dotnet) FONTASY : CLASSE DE MANIPULATION DE CHAINE DE CARACTÈRE par dodo7263
Source .NET (Dotnet) [XML] SERIALISER UN DICTIONARY GÉNÉRIQUE par TheOnlyMaX
Source avec Zip PREPAREDFORMAT par Warny
Source avec Zip Source avec une capture Source .NET (Dotnet) T-SQL FORMATER par Warny
Source .NET (Dotnet) GREP POUR WINDOWS par Warny

 Sources en rapport avec celle ci

Source .NET (Dotnet) SÉRIALISATION (BINAIRE) OBJECT, IMAGE, CLASS ... par wortmany
Source avec Zip Source .NET (Dotnet) FFMPEG.NET : WRAPPER .NET DE FFMPEG par MasterShadows
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 conversion hexa en binaire [ par amzerd ] bonjour je suis débutans en c# , je voulasi seulement savoir comment on fait une conversion de haxa2binn avec c# c'est trés urgent merciiiii !!!!!! 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.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 0,593 sec (3)

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