à l'aide ya urgence
Résolu
Michel
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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..
merci d'avance..
2 réponses
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 :
Doit afficher :
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
#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
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; }