Conversion hexadecimal -> decimal ( et contraire) en C

cs_Arrakis Messages postés 4 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 4 mai 2002 - 3 mai 2002 à 22:56
Croqmort Messages postés 95 Date d'inscription mercredi 5 décembre 2001 Statut Membre Dernière intervention 27 juin 2006 - 5 mai 2002 à 23:36
Bonjour,

Je ne connais pas de fonction pour realiser cette conversion du decimal vers l'hexa, si vous avez une idée

merci

Arrakis
A voir également:

4 réponses

ADPro22 Messages postés 126 Date d'inscription mercredi 18 juillet 2001 Statut Membre Dernière intervention 27 octobre 2004
3 mai 2002 à 23:15
#include
using std::setbase;
using std::hex;
using std::dec;
using std::oct;

// code

int i ;
cout << hex << i << endl; // affichage hexadecimal
cout << dec << i << endl; // affichage decimal
cout << oct << i << endl; // affichage octal
0
cs_Arrakis Messages postés 4 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 4 mai 2002
4 mai 2002 à 13:24
merci, je connais les fonction pour un affichage , mais là j'ai des claculs a faire dans mon programme et ma variable en decimal doit obligatoirement etre convertis en hexa

Arrakis
0
Blustuff Messages postés 20 Date d'inscription jeudi 7 mars 2002 Statut Membre Dernière intervention 27 juin 2007
5 mai 2002 à 20:30
Ca dépend pour quoi faire... A la base, les variables ne sont ni en héxa ni en décimal mais en binaire... Alors la conversion dépend de ton format de déparrt et le format auquel tu veux arriver.

Si c'est pour convertir une chaine, il faut que tu convertisse toi même.

char* Chaine; //Nombre en décimal
int ValeurNumerique = 0;
for (int n 1, x 0 ; x < strlen(Chaine) ; x++)
{
ValeurNumerique += (Chaine[x] - '0') * n
n *= 10; //remplace 10 par la base de départ

}

for (int x = 0 ; ValeurNumerique > 0 ; x++)
{
//remplace 16 par la base d'arrivé
Chaine[x] = ValeurNumerique % 16;
ValeurNumerique /= 16;
}

Bon mon code ne s'adapte pas vraiment a tous les contextes a toi de voir la déclaration dynamique ou non de Chaine.

Je sais pas si j'ai répondu a ta question

Blustuff.
0
Croqmort Messages postés 95 Date d'inscription mercredi 5 décembre 2001 Statut Membre Dernière intervention 27 juin 2006
5 mai 2002 à 23:36
pour convertir un nombre en hexa ou en decimal on peut utiliser sprintf :
char buffer[16];
sprintf(buffer,"%d",0x1A5);
ou
char buffer[16];
sprintf(buffer,"%X",150);
0
Rejoignez-nous