Convertir BYTE[] vers char * [Résolu]

cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Dernière intervention
11 mai 2009
- 12 oct. 2007 à 13:02 - Dernière réponse : racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
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..."
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
SAKingdom
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Dernière intervention
16 février 2009
- 12 oct. 2007 à 16:01
3
Merci
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++ (@++)<!--

Merci SAKingdom 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de SAKingdom
Meilleure réponse
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
- 13 oct. 2007 à 02:50
3
Merci
Salut,
Tu peux aussi utiliser une petite fonction qui fait directement la convertion sans passer par itoa(). Voici un exemple:

char* BytesToHex(char* destination, BYTE* source, int longueur)
{
    char chiffres[]="0123456789ABCDEF";
    int i;
    for(i=0; i<longueur; i++)
    {
        destination[i*2]=chiffres[source[i] >> 4];
        destination[i*2+1]=chiffres[source[i]& 0x0F];
    }
    destination[i*2]=0;
    return destination;
}

Pour l'appeler il suffit de faire par exemple:
    BYTE tableau[]={0x01,0x0f,0xab,0x1b,0x44,0x55,0x6a,0x7b,0x8c,0x9d,0xae,0xbf,0xc0,0xd1,0xe2,0xf3};
    char buffer[34];
    BytesToHex(buffer,tableau,16);
A noter que la taille du buffer doit être,  au moins, deux fois la taille du tableau +1.

Merci racpp 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de racpp
The_Guardian
Messages postés
318
Date d'inscription
vendredi 25 mai 2007
Dernière intervention
19 octobre 2007
- 12 oct. 2007 à 15:00
0
Merci
Bonjour,

un byte ça veut dire un octet
un tableau de byte c'est donc un tableau d'octets
un char c'est aussi un octet (en C)

Donc tu devrais pas avoir trop de problèmes, du moment que tu arrives à convertir tes "byte" en "char".
_ et un char *, c'est un tableau d'octets aussi
A priori, pas de problèmes. Faudra faire attention par contre à ne pas considérer tes "char" comme des caractères signés
mais ça devrait pas poser de problème non plus
_ si tu as un problème (ce qui ne devrait pas être le cas), précise le langage dans lequel tu travailles et colle un bout de code

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Dernière intervention
11 mai 2009
- 12 oct. 2007 à 20:50
0
Merci
merci beaucoup pour la réponse...
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
Commenter la réponse de cs_LordBob

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.