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) :
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);
}
J'envoie à ma fonction une chaine char* : MQ0w

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