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

wantofirst Messages postés 7 Date d'inscription jeudi 29 juin 2006 Statut Membre Dernière intervention 21 juillet 2006 - 4 juil. 2006 à 18:13
wantofirst Messages postés 7 Date d'inscription jeudi 29 juin 2006 Statut Membre Dernière intervention 21 juillet 2006 - 5 juil. 2006 à 18:04
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

Utilisateur anonyme
5 juil. 2006 à 01:39
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 
0
wantofirst Messages postés 7 Date d'inscription jeudi 29 juin 2006 Statut Membre Dernière intervention 21 juillet 2006
5 juil. 2006 à 09:37
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
0
xboxut Messages postés 172 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 27 novembre 2009 1
5 juil. 2006 à 10:20
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;
}
0
Utilisateur anonyme
5 juil. 2006 à 17:00
Je vais voir si on peut pas convertir une valeur exadécimal en INT

MaLaDeDeDe 97one 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
5 juil. 2006 à 17:14
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 
0
wantofirst Messages postés 7 Date d'inscription jeudi 29 juin 2006 Statut Membre Dernière intervention 21 juillet 2006
5 juil. 2006 à 18:04
je vais voir et je vous dis
merci

l'homme qui marche debout
Wangrin The First
0
Rejoignez-nous