Probleme pour un convertisseur hexadecimal

Signaler
Messages postés
26
Date d'inscription
jeudi 11 novembre 2004
Statut
Membre
Dernière intervention
29 octobre 2009
-
Messages postés
35
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
11 décembre 2004
-
Bonsoir,

#include<stdio.h>

int main(){

char *ch;
int i,n,reste;

printf("Rentrer un nombre:");
scanf("%d",&n);
while(n>0)
{
reste=n%16;
ch[i]=reste;
if(reste==10)
{
ch[i]='a';
}
if(reste==11)
{
ch[i]='b';
}
if(reste==12)
{
ch[i]='c';
}
if(reste==13)
{
ch[i]='d';
}
if(reste==14)
{
ch[i]='e';
}
if(reste==15)
{
ch[i]='f';
}
printf("%4s",ch);
n=n/16;
i++;
}

}

Je n'arrive à faire afficher les lettres pour mon convertiseur décimal vers hexadecimal.
D'ou viens le probleme.
Merci
:)

3 réponses

Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
printf("%X",varable)
permet de convertir une variable en hexadecimal
Messages postés
114
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
5 avril 2012
1
Avant tout, n'oublie jamais d'initialiser ton i (surtout si tu t'en sers comme index pour une chaîne de caractères)... et aussi de placer le zéro terminal à la fin de cette chaîne
Ensuite, il faut additionner 48 à la valeur reste (code ASCII de '0'), et enfin, je te laisse le dernier problème, le code HEXA est bien retourné mais à l'envers ( 127 doit donner 7F et pas F7 )... Bon courage....

Soit tu pars sur un autre algo, soit tu renverse la chaîne (sujet dans le forum il y a quelques jours)

#include<stdio.h>

int main(){

char *ch;
int i,n,reste;

printf("Rentrer un nombre:");
scanf("%d",&n);
i=0;
while(n>0)
{
reste=n%16;
ch[i]=reste+48;
if(reste==10)
{
ch[i]='a';
}
if(reste==11)
{
ch[i]='b';
}
if(reste==12)
{
ch[i]='c';
}
if(reste==13)
{
ch[i]='d';
}
if(reste==14)
{
ch[i]='e';
}
if(reste==15)
{
ch[i]='f';
}

n=n/16;
i++;
}
ch[i]=0;
printf("%4s\n",ch);

}

6co
Messages postés
35
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
11 décembre 2004

Ou est ce que ton entier i est initialisé?
Parce que tu l'incrémente mais a quelle valeur il commence ...