#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Menu()
{
char ChoixMenu=0;
int NbreChoisi=0;
int base=2;
printf("{--- Conversion de bases ---} \n");
printf(" Choisissez le type de conversion(1 ou 2) \n");
printf(" 1. Depuis la base 2 vers une autre base(entre 2 et 16) \n");
printf(" 2. Depuis la base 10 vers une autre base (entre 2 et 16)\n ");
scanf("%d", &ChoixMenu);
switch(ChoixMenu)
{
case 1:
printf("Choisissez votre nombre (8 bits maximum): \n");
scanf("%d", NbreChoisi);
printf("Choisissez la base de destination (entre 2 et 16 ) : \n");
scanf("%d", &base);
ConversionBinaire(NbreChoisi,base);
break;
case 2:
printf("Choisissez votre nombre: \n");
scanf("%d",NbreChoisi);
printf("Choisissez la base de destination (entre 2 et 16 ) : \n");
scanf("%d",&base);
ConversionDecimale(NbreChoisi,base);
break;
default:
printf(" Saisie incorrecte \n");
Menu();
break;
}
}
int ConversionDecimale(int NbreChoisi,int base)
{
char CaractereBase[16] =
{'0', '1', '2', '3', '4', '5', '6', '7','8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
int next_digit, index=0;
int NbreConverti[64];
while (NbreChoisi != 0)
{
NbreConverti[index] = NbreChoisi % base;
NbreChoisi = NbreChoisi / base;
++index;
}
--index;
printf("\n\n Nombre converti : = ");
for( ; index>=0; index--)
{
printf("%c", CaractereBase[NbreConverti[index]]);
}
printf("\n");
}
int ConversionBinaire(int NbreChoisi,int base)
{
char Buffer[11];
int Decimal = 0;
int Boucle = 0;
int NbreConverti = 0;
sprintf(Buffer, "%d", NbreChoisi);
int LongueurNbre = strlen(Buffer);
while(LongueurNbre--)
{
NbreConverti = ( Buffer[LongueurNbre] == 49?1:0 );
Decimal |= NbreConverti << Boucle++;
}
NbreChoisi=NbreConverti;
ConversionDecimale(NbreChoisi,base);
}
int main()
{
Menu();
}