Convertir une chaine de caratère en int sans perte de données

Signaler
Messages postés
7
Date d'inscription
jeudi 29 juin 2006
Statut
Membre
Dernière intervention
21 juillet 2006
-
Messages postés
7
Date d'inscription
jeudi 29 juin 2006
Statut
Membre
Dernière intervention
21 juillet 2006
-
bonjour tous le monde
j'ai le problème suivant:
j'avais une chaine de caractère (0x3de4a7fa) que je devait l'ecrire en (0xfaa7e43d);ce que j'ai réussi a faire.
j'ai une fonction qui me permet de convertir un int de la forme 0x3de4a7fa en un réel.le problème est que ma première fonction me donne une chaine de caractère.
Donc j'aimerai savoir si on a la possiblité de convertir une chaine de caractère en int sans perte de donnée;pour que ma deuxième fonction puisse faire son travail.
PI: j'ai essayer atoi et atof mais ça ne marche pas
je vous remercie de m'avoir lu

l'homme qui marche debout
Wangrin The First

6 réponses


J'ai pas trop compri mais jte donne un exemple de atoi on sait jamais
char CharNombre[5]="20"
int IntNombre=atoi(CharNombre);

MaLaDeDeDe 97one 
Messages postés
7
Date d'inscription
jeudi 29 juin 2006
Statut
Membre
Dernière intervention
21 juillet 2006

je vois bien ton exmaple
voila mon example
char *CharHex="0x3de4a7fa"
int  EntierEnHex=atoi(CharHex)
la convertion est faite mais y'a troncature de char vers int.Si tu vois un peux ce que je veux dire
l'homme qui marche debout
Wangrin The First
Messages postés
172
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
27 novembre 2009

atoi marchera pas, il prend des nombres en base decimal :s.
le truc a faire est d'utiliser un int, d analyser chaque lettre de ton nombre en hexa,et pour chaque lettre tu vas additioner la valeur qui lui correspond en decimal * le nombre de puissance de 16 

pour bien comprendre un petit exemple (en decimal :p )

-> char nombre[]="25384";
-> int inombre=0;
-> puissance=1;
->chiffre=0;
tu trouve la fin de la chaine -> '4'

tant que l'on a pas atteint le debut de la chaine
{
chiffre=on transorme le chiffre de ta chaine en int -> on peut le faire ac atoi pour les truc base 10 sinon par une fonction ac un switch et 16 case;

if(puissance !=0)
inombre+=chiffre*10*puissance
else
inombre+=chiffre;

puissance++;
on se deplace de 1 case vers le debut de la chaine;
}

Je vais voir si on peut pas convertir une valeur exadécimal en INT

MaLaDeDeDe 97one 

alors va voir c'est source:
http://www.cppfrance.com/codes/CONVERTISSEUR-BINAIRE-DECIMAL-DECIMAL-BINAIRE-DECIMAL-HEXA-HEXA_11077.aspx

J'èspere que ca t'aidera moi j'ai pas regardé le contenu ++

MaLaDeDeDe 97one 
Messages postés
7
Date d'inscription
jeudi 29 juin 2006
Statut
Membre
Dernière intervention
21 juillet 2006

je vais voir et je vous dis
merci

l'homme qui marche debout
Wangrin The First