Convertion chaine de caractere commencant par 0 en entier

humnanamouch
Messages postés
10
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
20 mars 2006
- 6 mars 2005 à 12:32
humnanamouch
Messages postés
10
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
20 mars 2006
- 7 mars 2005 à 14:55
bonjour
En fait j'ai une chaine de caractere avec 8 chiffres qui correspond à un code ascii et je voudrais pouvoir recuperer le caractere qui correspond à ce code.

Je pensais donc convertir la chaine de caractere en entier avec la fonction "atoi" mais comme le nombre est "00001001" cela me renvoie que 1001. Donc impossible d'avoir un code sur 8 bits.

merci à quiconque voudra m'aider

3 réponses

yoyo269
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
6 mars 2005 à 13:10
Y a une technique qui consisterait à lire les chiffres 1 par 1.
Ca donnerait qq chose dans le genre :

int CodeAscii = Str[0] * 128 + Str[1] * 64 + Str[2] * 32 + Str[3] * 16 + Str[4] * 8 + Str[5] * 4 + Str[6] * 2 + Str[7];

YOYO, @+.
YOYO
0
NitRic
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

7 mars 2005 à 06:10
Si ca peu t'aider d'avantage et aussi, si j'ai bien compris le problème :}

void charbin_binchar()
{


int i, cnt=0;
char bin[12];
char ch;


ch = 'a';
/* converti `ch` en binaire */
for ( i = 7; i >= 0; i--, ++cnt )
bin[cnt] = ( ((ch >> i) & 1) ? '1' : '0' );


bin[cnt] = '\0'; /* à ne pas oublier */
puts(bin); /* affiche dans la console */


ch = 'z'; /* change la valeur de `ch`(pour le test seulement) */


/* converti le binaire en char */
for ( cnt = 0; bin[cnt]; ++cnt )
ch = (ch << 1) | (bin[cnt] - '0');


/* affiche le caractère ainsi que son code ascii */
printf("%c - %d\n", ch, ch);


}

attention, le code ici présent est conçu pour le type char seulement.

~(.:: NitRic ::.)~
0
humnanamouch
Messages postés
10
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
20 mars 2006

7 mars 2005 à 14:55
merci pour ces reponses. je m'en suis inspiré et j'ai reussi a faire ce que je voulais

int code_ascii=0;
int j,k;
char buf[7];
/*parcour de toute la chaine de caractere*/
for(j=0;j<8;j++)
{
if(buf[j]=='1')
{/*conversion du caractere en un entier*/
var_tmp=1;
/*calcul de la puissance de 2 selon la place dans le code pour ecriture en decimale*/
for(k=0;k<(7-j);k++)
var_tmp=var_tmp*2;
}
else
var_tmp=0;
code_ascii=code_ascii+var_tmp;
0