à l'aide ya urgence

Résolu
Michel -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, je veux savoir comment de manière generale passer d'une base x en une base y en langage c
merci d'avance..


2 réponses

Holomark Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   2
 
Ca n'a pas vraiment de sens en C., tout les nombres sont en fait manipulés en base 2. Ce qui varie c'est leur représentation, par exemple quand on l'affiche sur la sortie standard, le selecteur de printf décidera de la forme :
#include <stdio.h>

int main (void) {
   int var = 42;

   printf("%d\n", var);
   printf("%x\n", var);

   return 0;
}

Doit afficher :

42
2a


Si l'idée c'est de convertir une chaîne de caractères en un scalaire, alors un truc à base de sscanf peut faire l'affaire.

http://membres.multimania.fr/dancel/c/c60_10.htm
http://membres.multimania.fr/dancel/c/c60_40.htm
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
On peut faire ça simplement, juste avec les fonctions de conversions itoa et strtol.

#include<stdlib.h>
#include<stdio.h>
#include<string.h>

char* convertir(char* entier1, int base1, char* entier2, int base2)
{
	return itoa(strtol(entier1, NULL, base1),entier2,base2);
}

int main()
{
	char entier1[BUFSIZ], entier2[BUFSIZ];

	// conversion de "123" de la base 5 à la base 7 --> "53"
	strcpy(entier1,"123");
	convertir(entier1,5,entier2,7);
	printf("%s\n",entier2);

	return 0;
}
0