/* Convetisseur base 10 -> base x en base 2, jusqu'à (2^30) 1 073 741 823 int -> 2^32*/#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>/* Convertit de la base 10 à la base x */void converttobase (int nombre, const int base, char * test) { int resultat = 0, i, j , k; char convert[2] ; int i_old = -1; while (nombre > 0) { i = 0; j = 0; while (nombre >= pow(base,i+1)) { i++; } while (nombre >= (j+1)*pow(base,i)) { j++; } resultat += j*pow(10,i); for ( k = i; k < i_old; k++) { strcat(test ,"0"); } sprintf(convert,"%d",j); strcat(test ,convert); nombre -= j*pow(base,i); i_old = i - 1; } /* Ajout de 0 après le dernier nombre */ int kfin; for (kfin = 0; kfin <= i_old; kfin++) { strcat(test ,"0"); }}/* Covertit un nombre de la base x vers ka base 10 */int convertfrombase(int nombre, const int base ) { int i,j,machin = 0; while (nombre > 0) { i = 0; j = 0; while (nombre >= pow(10,i+1)) { i++; } while (nombre >= (j+1)*pow(10,i)) { j++; } machin += j*pow(base,i); nombre -= j*pow(10,i); } return machin;}int main(int argc, char* argv[]){ int nombre; /* nombre en base (10 ou x) */ int basefrom; /* base cible */ int baseto; /* base du nombre, facultatif */ /* nombre en base 10 */ char reponse[50] = ""; int base10; base10 = 0; if(argc < 3) exit(1); nombre = atoi(argv[1]); baseto = atoi(argv[2]); switch(argc) { case 3: converttobase(nombre,baseto,reponse); printf("%d en base %d = %s\n",nombre,baseto,reponse); exit(0); case 4: basefrom = atoi(argv[3]); /* conversion /nombre/ /baseto/ -> /base 10/ */ base10 = convertfrombase(nombre,basefrom); printf("%d en base %d = %d en base 10, ",nombre,basefrom,base10); converttobase(base10,baseto,reponse); printf("%d en base %d = %s\n",base10,baseto,reponse); exit(0); default: printf("Utilisation: %s [entier] [base] ([base cible])\n",argv[0]); exit(1); }}