Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1548 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  caractère --> binaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

caractère --> binaire

n°1303514
PB-
Posté le 11-02-2006 à 17:17:11  profilanswer
 

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

mood
Publicité
Posté le 11-02-2006 à 17:17:11  profilanswer
 

n°1303648
olivthill
Posté le 12-02-2006 à 02:39:23  profilanswer
 

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;
int val_bin3;
c = -107; //par exemple
val_bin3 = c & 0x4 >> 2;

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.

Message cité 1 fois
Message édité par olivthill le 12-02-2006 à 02:40:59
n°1303656
Taz
bisounours-codeur
Posté le 12-02-2006 à 10:21:48  profilanswer
 

et si tes char sont pas signés ?

n°1303753
PB-
Posté le 12-02-2006 à 16:28:39  profilanswer
 

ok merci ca devrait passer comme ca

n°1305625
Tarabiscot​e
Posté le 14-02-2006 à 20:36:26  profilanswer
 

olivthill a écrit :

val_bin3 = c & 0x4 >> 2;



=> val_bin3 = c & 1;
 

n°1305631
olivthill
Posté le 14-02-2006 à 20:57:18  profilanswer
 

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.

n°1305634
skelter
Posté le 14-02-2006 à 21:03:41  profilanswer
 

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;

n°1305636
olivthill
Posté le 14-02-2006 à 21:07:20  profilanswer
 

Alors j'ai oublié des parenthèses. Bien vu skelter !

n°1305644
PB-
Posté le 14-02-2006 à 21:26:44  profilanswer
 

merci j'ai réussi, ca marche nickel


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  caractère --> binaire

 

Sujets relatifs
chaine caractere aidez moi svp........Shell unix : caractère saut de ligne à supprimer
[Résolu] Comment récupérer fichier binaire POSTé?VERIFIER CONTENU CHAINE CARACTERE
Supprimer le dernier caractere d'une chaineTracker une chaine de caractère précise pour en faire un lien ?
champ de texte dynamique et caractere grasConversion ASCII vers un caractère
modification de valeur binaire en mysql ?? [resolu][C newbie] Comment convertir un tableau de binaire en caractère ?
Plus de sujets relatifs à : caractère --> binaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR