Conversion de binaire en décimal puis de binaire en hexadécimal,

Fermé
Damada24 Messages postés 2 Date d'inscription samedi 25 février 2017 Statut Membre Dernière intervention 25 février 2017 - 25 févr. 2017 à 02:03
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 25 févr. 2017 à 15:40
Bonjour
Quel sont les conditions qu'on peut poser pour cette conversion et comment les calculer en c merci d'avance


A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
25 févr. 2017 à 15:40
Bonjour,

Le problème des conversions de bases est le plus anti-pédagogique que je connaisse, heureusement on ne l'a qu'à l'école.

Il y a deux concepts importants à trouver ici, quel seront les types des données et quels seront les algorithmes de conversion.
Le premier est le plus difficile à deviner. On peut à partir d'une séquence de 'chiffres' dans une base en entrée trouver le nombre correspondant, ou à partir d'un nombre trouver la séquence de chiffres qui lui correspond dans une base destination. Un unsigned par exemple est un nombre, il est ce qu'il est, on peut décider de le représenter dans une base donnée, il sera alors vu sous la forme d'une séquence de caractères.
On devrait pouvoir créer les fonctions :
unsigned int convertirSeqBase2VersNb( const char seq[] );
void convertirNbVersSeqBase8( unsigned int nbr , char seq[] );
On peut aussi peut-être se passer du nombre intermédiaire avec :
void convertirSeqBaseVersSeqBase( const char seqIn[] , unsigned baseIn, unsigned baseOut, char seqOut[] );

L'intêret d'utiliser une séquence de caractère est que pour la saisir ou l'afficher, il n'y a qu'un code minimal.
char seqIn[33];
char seqOut[33];
printf( "entrer la sequence a convertir" );
scanf( "%32s" , seqIn );
unsigned nbr = convertirSeqBase2VersNb( seqIn );
convertirNbVersSeqBase8( nbr , seqOut );
printf( "sequence convertie : %s\n" , seqOut );
Les fonctions de conversion devront gérer des transformations caractère<=>chiffre en plus du travail sur la base.
Le cas de la base 16 est le plus difficile, mais si l'utiliser est autorisé, c'est aussi celui que la bibliothèque connait déjà, les fonctions de conversions s'écrivent en une simple utilisation de
sscanf(seqIn,"%x",&nbr)
et
sprintf(seqOut,"%x",nbr);
.

Tu peux essayer cette piste ou d'autres, n'hésite pas à poster tes essais
Dalfab
0