Bonsoir ,
Je dispose d'une fonction qui convertit des chars en binaires .
Cependant , quel est le moyen pour arriver à l'inverse , c'est à dire transformer du binaire ne char ?
Merci d'avance
Bonsoir ,
Je dispose d'une fonction qui convertit des chars en binaires .
Cependant , quel est le moyen pour arriver à l'inverse , c'est à dire transformer du binaire ne char ?
Merci d'avance
Bonjour
Ta question est incompréhensible car tu mélanges deux notions qui n'ont aucun rapport.
Le char est un type du langage. Il permet de stocker des nombres dont le codage binaire ne dépasse pas un octet (8 bits)
Le binaire est une des bases de la numération mathématique. Il permet de représenter un nombre en n'utilisant que des puissances de 2.
Donc convertir un type en base est du même niveau que convertir des masses en vitesse. Alors déjà ta fonction qui convertit des char en binaire j'aimerais bien la voir parce que convertir des binaires en char je ne vois pas...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Ce qu'au final veut dire Sve@r c'est que tu n'énonces pas précisément ton problème et que cela cache sûrement une mauvaise compréhension du problème
Un char est un type de données, utilisant 8 bits pour stocker une valeur (une valeur binaire puisque c'est une suite de bits !). Ce n'est pas nécessairement un caractère ASCII qui sera stocké dans cette variable. D'ailleurs, un caractère ASCII n'est que l'interprétation particulière d'un nombre pour dire "tel chiffre représente telle lettre".
Ton problème semble être de dire :
- j'ai un caractère (par exemple 'a') et je souhaite avoir une chaine de caractères symbolisant sa représentation binaire ('a' = 97 donc --> "0b1100001")
- et réciproquement (avoir "0b1100001" et retrouver 'a')
Est-ce bien cela ?
Je me suis mal exprimé peut être .
Binaire en texte :-) .
Au final je vais laisser tombé
Il semble...
Là c'est un peu mieux. Donc imaginons que tu aies un nombre en binaire (par exemple 00001101 valant 13 en décimal) tu veux au final "1101".
Bon ben te suffit de parcourir chaque bit de ton nombre. Toutefois il faut commencer par la fin. Donc tu instancies une boucle sur i partant de sizeof(nombre) * 8 -1 et allant vers 0.
Ensuite tu extrais le bit correspondant à la position "i". Te suffit de faire nombre & (0x01 << i) ou bien (nombre >> i) & 0x01. Dans les deux cas ça te donne au final 0 ou autre chose.
Enfin si c'est 0 tu affiches "0"; et si c'est pas 0 tu affiches "1".
Et pour optimiser un peu, on peut rajouter un flag pour n'afficher les "0" que s'il y a eu au-moins un "1"
Exemple
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <stdio.h> int main() { int nbr=1234; int i=0; char flag=0; for (i=sizeof(nbr) * 8 - 1; i >= 0; i--) { if (nbr & (0x01 << i)) { flag=1; fputc('1', stdout); } else { if (flag || i == 0) fputc('0', stdout); } } fputc('\n', stdout); }
Résultat: 10011010010 ce qui correspond bien, en base 2, au nombre 1234 écrit en base 10.
Ok
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager