Salut je voulais savoir si il y a une fonction qui fait :
hex to dec
dec to hex
binaire to dec
dec to binaire
???
Salut je voulais savoir si il y a une fonction qui fait :
hex to dec
dec to hex
binaire to dec
dec to binaire
???
J'imagine que veux parler d'afficher des entiers dans une base ou une autre. printf() connait les bases décimale, octale et hexadécimale. Pour afficher en binaire, il faut faire sa petite fonction, qui n'est pas très compliquée.
Plus d'infos ici.
Merci, mais je pige pas tout lol
Tu peut me faire un petit sample ?^^
Simple.
Imagines que tu fais ceci:
Là, tu as un entier. Cet entier n'est ni décimal, ni binaire, ni hexadécimal, ni même octal. C'est juste un entier, qui vaut tout-à-la-fois 4210, 2A16, 1010102, et 528
Code : Sélectionner tout - Visualiser dans une fenêtre à part int a = 42;
Et là, tu peux l'afficher sous diverses formes. Notamment en hexadécimal avec le format %X de printf().
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Un petit bout de code. Comme je l'écris plus haut, printf() gère le décimal, octal et hexadécimal. Pour le binaire, on utilise la fonction de la FAQ, mais on peut l'utiliser pour les autres bases aussi:
On obtient bien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #include <stdio.h> #include <limits.h> char *baseconv(unsigned int num, int base) { char *p = NULL; if (base >= 2 && base <= 16) { static char retbuf[sizeof (int) * CHAR_BIT + 1]; p = &retbuf[sizeof retbuf - 1]; *p = '\0'; do { *--p = "0123456789abcdef"[num % base]; num /= base; } while(num != 0); } return p; } int main(void) { unsigned int i = 42; printf("Decimal: %u\n", i); printf("Octal: %o\n", i); printf("Hexadecimal: %x\n", i); printf("Decimal from baseconv: %s\n", baseconv(i, 10)); printf("Octal from baseconv: %s\n", baseconv(i, 8)); printf("Hexadecimal from baseconv: %s\n", baseconv(i, 16)); printf("Binary from baseconv: %s\n", baseconv(i, 2)); return 0; }
Comme le fait remarquer Médinoc, la véritable representation de 42 importe peu. Le choix de la base n'importe que pour les entrées/sorties.Decimal: 42
Octal: 52
Hexadecimal: 2a
Decimal from baseconv: 42
Octal from baseconv: 52
Hexadecimal from baseconv: 2a
Binary from baseconv: 101010
Partager