Bonjour,
J'explique mon problème qui est très simple :
Je souhaite à partir d'une chaine codé en base64 récupérer sa valeur décoder en Hexa (correspondance table ASCII).
Avec le code suivant (je ne mets pas tout, juste ce qu'il faut) :
J'envoie à ma fonction une chaine char* : MQ0w
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 int decode_base64 (char *buffer) { int car; char valcar [4]; int i; int posorig; int posdest; posorig = 0; posdest = 0; while (buffer [posorig] > ' ' && buffer [posorig] != '=') { for (i = 0; i < 4 && buffer [posorig] != '='; i++) { car = buffer [posorig++]; if ('A' <= car && car <= 'Z') valcar [i] = car - 'A'; else if ('a' <= car && car <= 'z') valcar [i] = car + 26 - 'a'; else if ('0' <= car && car <= '9') valcar [i] = car + 52 - '0'; else if (car == '+') valcar [i] = 62; else if (car == '/') valcar [i] = 63; } buffer [posdest++] = (valcar [0] << 2) | (valcar [1] >> 4); if (i > 2) { buffer [posdest++] = (valcar [1] << 4) | (valcar [2] >> 2); if (i > 3) buffer [posdest++] = (valcar [2] << 6) | (valcar [3]); } } buffer [posdest] = '\0'; return (posdest); }
Je voudrai qu'elle me retourne : 8474 30
Pour le moment, j'obtiens l'équivalent de l'hexa mais en char dans la variable buffer, ce qui donne, et c'est normal, un résultat non affichable.
Merci pour votre aide
Partager