Conversion ascii hexadecimal [Résolu]

Grenapeel 8 Messages postés mercredi 10 juin 2009Date d'inscription 15 juillet 2009 Dernière intervention - 17 juin 2009 à 12:50 - Dernière réponse : cs_TeniX 118 Messages postés mercredi 24 décembre 2003Date d'inscription 11 décembre 2011 Dernière intervention
- 17 juin 2009 à 14:29
Bonjour,
je vous expose mon problème: je lis des données ASCII sur un port RS232 grace a la fonction ReadFile
et je les stockent dans buf. Je cherche a convertir chacun des caractères ASCII de buf en hexadécimal ( ce que je fais avec le sprintf  dans la boucle for), jusque là tout va bien, mais je veux ensuite rècuperer toutes les conversions dans une chaine de caractères les unes au bout des autres.
exemple : si je lis sur le port en ASCII  "+" puis "5" la conversion va me donner en hexa "2B" puis "35"
je voudrais donc recuperer une variable type string qui contiendrait "2B35" .
Je suis sur c'est bidon mais je bloque = )         ( j'espere avoir été clair )

Voici la partie de mon programme concernée:

    char hex[8] = {0} ;
    ClearCommError(m_hCom, &dwErrorflags, &Comstat);
    length=min(dwLength, Comstat.cbInQue);
    ReadFile(m_hCom, buf, length, &length, &m_osRead);

    nLength=length;
     if (nLength)
    {
        for (int i =0; i<nLength;i++)
        {       
            sprintf(hex, "%x", buf[i]);
            MessageBox(hex);

                if (buf[i]= ='\r')
            {    
                iline=iline+1;
                str+='\r\n';
            }

             else
                str+ =buf[i];
        }
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Pistol_Pete 1055 Messages postés samedi 2 octobre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 17 juin 2009 à 14:28
3
Merci
Salut
Effectivement tu n'as pas alloué de la mémoire pour ta variable chaine...
char chaine[50] ou char *chaine=new char[50]
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr

Merci Pistol_Pete 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

Commenter la réponse de Pistol_Pete
Meilleure réponse
cs_TeniX 118 Messages postés mercredi 24 décembre 2003Date d'inscription 11 décembre 2011 Dernière intervention - 17 juin 2009 à 14:29
3
Merci
déclaration chaine[100]; // par exmple pour 100 caratère

Merci cs_TeniX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 123 internautes ce mois-ci

Commenter la réponse de cs_TeniX
cs_TeniX 118 Messages postés mercredi 24 décembre 2003Date d'inscription 11 décembre 2011 Dernière intervention - 17 juin 2009 à 13:48
0
Merci
J'ai pas bien saisie ton problème tu veux recrée une chaine ? si c sa essai

sprintf(hex,"%x",buf[i]);
strcat(chaine,hex);
Commenter la réponse de cs_TeniX
Grenapeel 8 Messages postés mercredi 10 juin 2009Date d'inscription 15 juillet 2009 Dernière intervention - 17 juin 2009 à 14:03
0
Merci
J'ai essayé avec le strcat mais ca plante quand je l'utilise,
j'ai peut etre mal déclaré chaine  ( char* chaine; )
le problème c'est qu'apres le sprintf je n arrive pas a stocker la valeur de hex dans une chaine de caractères
Commenter la réponse de Grenapeel

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.