Convertir BYTE[] vers char *

Résolu
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 - 12 oct. 2007 à 13:02
racpp Messages postés 1910 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 13 oct. 2007 à 02:50
Bonjour a tous,
voila en fait j'ai récupéré un algo de hash MD5, mon algo met le résultat dans un tableau de BYTE, j'aimerais récupérer ce résultat dans un char*. Mais je ne vois pas comment faire.
Pourriez-vous m'aider svp?
Merci par avance...
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."

4 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 oct. 2007 à 16:01
En char * ? Tu veux dire en chaine de caractère lisible ?

Dans ce cas, tu peux prendre chaque BYTE de ton tableau et faire une conversion grâce à itoa avec un radix de 16 puis tu concatènes les résultat à ta chaine final. Tu auras ainsi une chaine lisible de ton tableau de BYTE.
Ça devrait ressembler à:

char *tab2str (BYTE *pbBytes, int iSize, char *lpDest)
{
    while(iSize > 0) {
        char tmp[10], *i = tmp;

        itoa(*pbBytes++, tmp, 16);

        while(*i) *lpDest++ = *i++;
        *lpDest++ = ' ';

        iSize--;
    }

    *lpDest = 0;

    return lpDest;
}

int main (int argc, char *argv[])
{
    BYTE tab[] = {0x50, 0x60, 0x05, 0x14};
    char tmp[32];

    tab2str(tab, 4, tmp);

    printf("%s\n", tmp);

    return 0;
}

C++ (@++)<!--
3