Convertir un nombre dans la base de votre choix (c)

Contenu du snippet

Voilà, c'est un tout petit code simple qui part du principe que a=bq+r qui permet de convertir des nombres en base de la base 2 (binaire) à la base 35 (après il manque des lettres ;)) en passant par l'héxadécimal (16). C'est très simple (et ça pourrait sûrement être mieux fait) mais ça m'a servi donc je le mets.

Source / Exemple :


void cbase(b,n)  
 int b,n;  
 {  
  int q,t,a,tl[100];  
  float r;  
  q=n/b;  
  tl[0]=(n-(b*q));  
  t=1;  
  while(q>0)  
  {  
        a=q;  
        q/=b;  
        r=(a-(b*q));  
        tl[t]=r;  
        ++t;  
 }  
  --t;  
  while(t>=0)  
  {  
      if ( tl[t] < 10 ) {  printf(" %d",tl[t]); }  
      else { printf(" %c",tl[t] + 55 );  }  
        --t;  
  }  
  }  
  main()  
 {  
  int base,nombre;  
  char reponse;  
    do  
  {  
  do  
  {  
  printf("Quelle base voulez vous utiliser (bases de 2 à 35) ? ");  
  scanf(" %d",&base);  
  printf("Entrez le nombre entier en d%ccimal :",130);  
  scanf(" %d",&nombre);  
  }  
  while(base<2 || base>35);  
  cbase(base, nombre);  
  scanf(" %c",&reponse);  
 }  
 while(reponse != 'n');  
}

Conclusion :


Afin de faciliter le code, je n'ai pas utilisé les bases par puissances ( n = an*b^n + ... + a1*b+a0 en base b). En fait, en divisant un nombre par la base voulue, puis en redivisant les quotients obtenus par la base et ainsi de suite jusqu'à ce que le quotient soit nul, on obtient tout simplement le nombre dans la base souhaitée en prenant tous les restes de chaque division, du dernier reste jusqu'au premier.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.