BAHROUNRABII
Messages postés20Date d'inscriptionjeudi 7 août 2008StatutMembreDernière intervention29 novembre 2008
-
1 nov. 2008 à 12:39
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 2010
-
3 nov. 2008 à 18:53
bonjours tous,
Je suis débutant en Programmation et je veut créer en langage C un prog qui permet de convertir un message txt en binaire... en passant par les étapes suivantes:
- convertir les caractères en code ASCII.
- convertir le code ASCII résultant en binaire.
BAHROUNRABII
Messages postés20Date d'inscriptionjeudi 7 août 2008StatutMembreDernière intervention29 novembre 2008 3 nov. 2008 à 11:53
Bonjour ciberrique
Merci pour votre attention et votre aide mais je suis vraiment désolé car je n'arrive pas à comprendre votre code. si c'est possible est ce que vous pouvez me l'éclairçir avec des commentaire sur chaque ligne surtout concernant le code de la fonction "IntToBin" .
ciberrique
Messages postés589Date d'inscriptionlundi 25 août 2003StatutMembreDernière intervention18 juillet 20101 3 nov. 2008 à 18:53
La fonction IntToBin n'est pas de moi comme je l'ai dis je l'ai trouvé sur une source de cppfrance, voici donc ce que je peux commenter :
void IntToBin(int n, char *psz) //n = l'entier a convertir, *psz un pointeur sur un tableau de caractere
{ if(!n) *psz++ 48; //si n 0, psz[0] = 0 (0 en ascii = 48)
else { //sinon while(!(n & 0x80000000)) n <<1; // tant que n & 0x80000000 (la valeur binaire de n ET (bit a bit) 0x80000000) 0 alor n * 2 (decalage des bits de un 0 a vers la gauche)
while(n) { //tant que n !=0 *psz++ (n & 0x80000000) ? 49: 48; //psz[i] si (n & 0x80000000) == true alors 49 (49 en ascii = 1) sinon 48 (0)
n <<= 1; //decalage d'un 0 des bits de n vers la gauche
}
}
*psz = 0; // on met le pointeur a nul
}
//Donc en gros si j'ai bien compris (aux autres utilisateurs du forum de me corriger),
//si n = 0 alors la valeur binaire est 0 sinon
//tant que n & 0x80000000 != 0x80000000 on multiplie n par 2
//tant que (n)
//psz[i] = 0 si n & 0x80000000 est paire 1 sinon
// en faite on traite le dernier bit comme si c'etait le reste de la division par 2 (si je me trompe pas) du coup ca reviens au meme que le calcul par division mais avec des multiplication par 2.
int main()
{
char a = 'a'; //Un char que j'initialise avec 'a'
char *bin = new char[8]; //8 bits doivent suffirent, en faite c'est pour stocker le resultat de l'appel de la fonction IntToBin
IntToBin((int)a, bin); //Conversion, appel de la fonction IntToBin, en castant (int) a on obtient la valeur asci car les char sont en faite des entiers
printf("%s",bin); //Affichage du resultat
return 0;
}
<hr />www.e-fitz.com Encore plus de source et de tutoriels.