caractère --> binaire - C++ - Programmation
Marsh Posté le 12-02-2006 à 02:39:23
C'est une question classique, mais qui n'a pas de réponse, car pour un ordinateur tout est déjà en binaire (sauf pour un ordinateur ternaire ou analogique (mais ça ne court pas les rues (sauf si ce sont des robots (ok, je m'arrête)))).
Un caratère est un octet (sauf...). Il contient huit valeurs binaires. Il n'y pas de conversion à faire.
Cependant, s'il faut extraire un bit, il faut faire quelque chose, par exemple, utiliser la technique du masquage et du décalage.
Par exemple, si le bit à récupérer est le 3ème :
char c; |
Pour injecter une valeur binaire dans un octet, on peut utiliser l'opérateur booléen | (ou) ou & (et).
Mais pour échanger deux bits, il y a aussi d'autres méthodes, dont certaines ne nécessitent pas d'extraire et d'injecter des bits. On peut parfois se débrouiller avec des opérations arithmétiques plutôt qu'avec des opérations booléennes.
Marsh Posté le 14-02-2006 à 20:36:26
ReplyMarsh Posté le 14-02-2006 à 20:57:18
Pour le troisième bit (pas pour le premier, il faut lire avant de critiquer), le masque est réalisé en prenant 2 puissance (3 - 1), d'où 4, puis décallage deux pas vers la droite pou obtenir 1 ou 0. CQFD.
Marsh Posté le 14-02-2006 à 21:03:41
olivthill a écrit : Pour le troisième bit (pas pour le premier, il faut lire avant de critiquer), le masque est réalisé en prenant 2 puissance (3 - 1), d'où 4, puis décallage deux pas vers la droite pou obtenir 1 ou 0. CQFD. |
oui mais >> est prioritaire sur &, 0x4 >> 2 est évalué en premier et on en arrive bien à
val_bin3 = c & 1;
Marsh Posté le 11-02-2006 à 17:17:11
bonjour à tous,
J'aimerais savoir s'il existe une fonction qui permettrait de transformer un caractère en sa valeur binaire. ( et inversement )
Je m'explique, j'ai un fichier de texte et je souhaite effectuer des opérations comme une inversion de deux bits par exemple, j'ai donc besoin de transformer les caractères du texte en binaire, puis une fois que toutes ces opérations sont faites le retransformer en fichier texte. ( je travaille sous unix ).
Merci