Soyez le premier à donner votre avis sur cette source.
Snippet vu 36 568 fois - Téléchargée 27 fois
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 } }
24 nov. 2008 à 11:54
12 mars 2007 à 12:59
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.