Comment convertir une valeur char* en hexa
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:
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