Selune6666
Messages postés59Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention14 janvier 2008
-
16 nov. 2007 à 11:10
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
16 nov. 2007 à 18:23
Bonjour,
Je suis actuellement sur un projet de convertisseur de base (dec, binaire, hexa , octal) en C++
Mon utilisateur entre le nombre a convertir dans un tableau de caractere. Nombre[]
Lorsque le nombre entré est un décimal , pour le convertir j'utilise ceci entier=atoi(nombre) la conversion char int se fait correctement.
Cependant lorsque le nombre entré est binaire , octal ou hexadécimal je dois convertir ce tableau de charractere en tableau d'entier afin d'effectuer les calculs par la suite et la mon probleme commence. On va nommer ce tableau d'entier , tab[].
Je n'arrive pas a effectuer cette convertion. J'ai chercher differente façon de le faire sans succes.
-convertion direct tableau char vers le tableau int
-j'ai essayer aussi , avec une variable entre les 2 tableaux: Un char prend la valeur de la premiere case du tableau de char puis je convertir cette variable grace a la commande tab[1]=atoi(variable) cela ne marche pas non plus. (j'utilise des boucle for hein ^^)
Je ne comprend pas pourquoi cela ne marche pas avec cette deuxieme methode.
Voila j'espere avoir exposer clairement mon pb en vous remerciant d'avance des pistes , methodes , solutions que vous pouvez me proposer.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 16 nov. 2007 à 11:39
Si j'ai bien compris se que tu veux faire :
char test[9]="01000010";
int tab[8],i=0;
char *P,Tmp[2];
Tmp[1]=0;
P=test;
do
{
Tmp[0]=*(P++);
tab[i++]=atoi(Tmp);
}
while(*P!='\0');
Je pense que ton sousi venais du fait que lors du atoi tu faisais atoi(test[0]) or il faut absolument qu'il y ai un '\0' en fin de chaine.
A+
Selune6666
Messages postés59Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention14 janvier 2008 16 nov. 2007 à 11:59
selon le deboggeur :
invalid conversion from char to const char
j'ai pas tout compris a ce que tu a marqué...
voici la partie de code en question:
char nombrex (la variable qui reçois),nombre[N] (le tableau de charact)
int tab[N] (mon tableau d'entier), taille (nombre de charactere ds tableau d'entier calculer dans une fonction précédente)
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 16 nov. 2007 à 14:56
Sur quelle ligne de mon code cela fait cette erreur!!
invalid conversion from char to const char
je supose que c'est sur tab[i++]=atoi(Tmp);
mais ca compile très bien sur VS2005.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 16 nov. 2007 à 18:23
Ce n'est pas nécessaire d'utiliser atoi pour une chaine ascii.
Tu peux directement, à même la chaine, convertir en int sans utiliser un autre tableau.
Suffit de soustraire 0x30 je crois (le caractère '0')
char tmp[] = "54236", *c = tmp;
while(*c) {
*c -= '0';
c++;
}
Le 0 de fin de chaine sera toujours présent mais il suffit de ne pas le compter (taille du tableau - 1)