[C++] Convertisseur Héxa/Déci

saddog68 -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis actuellement entrain de tenter de créer un convertisseur Hexadécimal --> Décimal et inverse.
J'ai repris un ancien modèle que j'avais fait qui permettait de convertir du Décimal en Binaire et inverse également car je sais que le principe est quasiment le même.

Cependant je bloque avec les caratère A,B,C,D,E,F de l'héxadécimal que je n'arrive pas à convertir.

Pouvez-vous me donner un petit coup de pouce ?

Voici mon programme tel qu'il est en ce moment:



#include <iostream>
#include <math.h>
#include <string>
#include <sstream>

using namespace std;

int main()
{
char choix ;
string hexadecimal ;
int nb ;




choix = 'Z' ;
while (choix != 'Q' && choix != 'q')
{


cout << endl << "conversion decimal vers hexadecimal ........ 1" ;
cout << endl << "conversion hexadecimal vers decimal ........ 2" ;
cout << endl << "quitter .................................... Q" ;
cout << endl << "votre choix ................................ " ;
cin >> choix ;


if (choix == '1')
{
hexadecimal = "" ;
cout << "entrer un nombre decimal = " ;
cin >> nb ;
while (nb != 0);
{
char c = (nb%16) + '0' ;
hexadecimal = c + hexadecimal ;
nb = nb / 16 ;
}
cout << "conversion en hexadecimal " + hexadecimal ;
}
else
{
if (choix == '2')
{
nb = 0 ;
int k = 0 ;
double b = 16;
cout << "entrer un nombre hexadecimal = " ;
cin >> hexadecimal ;
while (hexadecimal.size() > 0)
{
string s = hexadecimal.substr(hexadecimal.size()-1, 1) ;
istringstream myStream(s);
int result ;
myStream>>result ;
nb += result * pow(b, k) ;
hexadecimal = hexadecimal.substr(0, hexadecimal.size()-1) ;
k++ ;

}

cout << "conversion en base 10 = " << nb ;
}

}
}
}



Merci d'avance !

PS: Je tiens à m'excuser si le sujet à déjà été traiter sur un autre post. J'ai un peu regarder mais je n'ai pas trouver.
A voir également:

4 réponses

saddog68
 
Pas de réponse ??
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
à mon avis, tu peux essayer en lui disant qu'il faut qu'il lise en hexadecimal, grâce une option type "flag" :
https://en.cppreference.com/w/cpp/io/ios_base/fmtflags
Et là il devrait convertir le a en valeur 10.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
0
saddog68
 
Bonsoir,

Merci pour ta réponse Char Snipeur, je vais essayer de voir avec ce que tu m'as dis.

Cependant, n'existe t il pas un moyen de déclarer ces variables en tant qu'entier, puis les convertir en chaine avec seulement les #include que j'ai déjà mis ? Sans passer par le typdef ou le #include <iomanip> que je n'ai pas encore appris.
à savoir:
#include <iostream>
#include <math.h>
#include <string>
#include <sstream>

Merci d'avance
0
saddog68
 
Toujours pas de réponse ?

Pourtant je pense pas que ça soit si difficile non ?
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
utilises ce que je t'ai donnée, c'est simple. Je ne suis même pas sur qu'il y ait besoin d'inclure le iomanip.
0