Bonjour,
Je viens de coder une fonction qui permet de convertir un décimal en hexadécimal. Je l'ai fait pour tout nombre de type unsigned int, sachant qu'en fait le plus grand nombre qui sera passé à ma fonction ne dépassera pas la valeur décimale du dernier caractère de la table ASCII étendue, soit 255 ( besoin de cette fonction pour écrire des données en hexa dans le registre ).
La voici :
J'aurais aimé avoir vos commentaires et avis sur ce bout de code : est-ce bien codé ? Peut-on faire plus simple ?
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 char *conversion_HEXA(unsigned int i) { char *res = NULL; int r = 0; int q = 0; int taille = 0; q = i / 16; taille++; do { q /= 16; taille++; }while (q != 0); if ((res = malloc(taille)) == NULL) { printf("Erreur d'allocation mémoire...\n"); } r = i % 16; q = i / 16; res[taille] = '\0'; taille--; if (r == 10) res[taille] = 65; else if (r == 11) res[taille] = 66; else if (r == 12) res[taille] = 67; else if (r == 13) res[taille] = 68; else if (r == 14) res[taille] = 69; else if (r == 15) res[taille] = 70; else if (r == 16) res[taille] = 71; else res[taille] = 48+r; do { taille--; r = q % 16; q /= 16; if (r == 10) res[taille] = 65; else if (r == 11) res[taille] = 66; else if (r == 12) res[taille] = 67; else if (r == 13) res[taille] = 68; else if (r == 14) res[taille] = 69; else if (r == 15) res[taille] = 70; else if (r == 16) res[taille] = 71; else res[taille] = 48+r; }while (q != 0); return(res); } int main () { char *tab = NULL; printf("%s\n", tab = conversion_HEXA(1000)); return(0); }
J'aimerais un retour critique dessus.
Merci par avance.
![]()
Partager