Convertir ascii en hexa [Résolu]

Messages postés
8
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
13 février 2008
- - Dernière réponse : cs_mootmoot
Messages postés
8
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
13 février 2008
- 13 févr. 2008 à 22:52
Bonjour à tous!
Voila un "recepteur wi-fi" me renvoi une trame en code ascii du genre 486039 et je voudrais le le code hexa correspondant. Voila bien sur je veu pas forcement un code deja fait mais au moin une piste ^^.(ps j'utilise le IDE de borland Turbeau C++).
Merci d'avance
Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
3
Merci
Que veux tu faire exactement de tes 8 octets?
Si tu veux afficher leur valeur en hexa utilise ma fonction:
ex:
BYTE trame[8] = "Ta Trame";
char Ret[16+1];

Bin2Hex(trame, ret, 8);
Ret[16] = 0;
MessageBox(0, ret, 0, 0);
Sinon explique exactement ce que tu veut en faire..

Neo_Fr

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 133 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Neo_Fr
Messages postés
17
Date d'inscription
mercredi 20 juin 2007
Statut
Membre
Dernière intervention
14 février 2008
0
Merci
Je veux bien t'aider mais j'ai pas compris comment tu peux dire que 486039 est du code ASCII car à ma connaissance le code ASCII s'arrête à 255.

Sinon, quand tu as le code ASCII pour le traduire en hexa, utilise la fonction sprintf que tu trouveras dans <stdio.h>
Commenter la réponse de JALEO WAHRANI
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
sprintf peut convertir une chaine en DWORD ?
Tu veux sans doute parler de sscanf.

Il existe une fonction que brunews a fait bien plus optimisé.
http://www.codyx.org/snippet_conversion-hexadecimal-decimal_132.aspx#642

C++ (@++)<!--
Commenter la réponse de SAKingdom
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
Non en fait, je crois avoir compris ta réponse.

Cette question est, en effet, très ambigüe.

C++ (@++)<!--
Commenter la réponse de SAKingdom
Messages postés
653
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
10 novembre 2014
2
0
Merci
Essaye cette fonction:

void __stdcall Bin2Hex(BYTE* lpIn, BYTE* lpOut, DWORD dwInSize)
{
static const BYTE HexaTable[16] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 };
DWORD i = (dwInSize-1);
while(1)
{
lpOut[2*i] = HexaTable[(lpIn[i]>>4) & 0x0f];
lpOut[2*i+1] = HexaTable[(lpIn[i]) & 0x0f];
if(!i--) break;
}
}

Neo_Fr
Commenter la réponse de Neo_Fr
Messages postés
8
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
13 février 2008
0
Merci
@JALEO WAHRANI : enfet je reçoit une trame de 8 octets et je voulais dire par "486039":
      1ere octet : 48 je voudrais convertir en 0x30( 0 )
      2eme octet : 60 "                               " 0x3C( < )
      3eme octet : 39 "                               " 0x27( ' )
Voile j'espere que tu voit ce que je veux dire. Quant à sprintf je sais pas si cela va m'aider puisqu'il faut que je range le resultat ds une variable et pas que je l'affiche ( a moin que sprintf n'affiche pas ^^).

@Neo_Fr : j'ai pas compris la signification des nom des arguments passé a la fonction...
Sinon je croit que c'est ce qu'il me fallait :p

Merci a tous et désoler pour la question qui n'était peut etre pas tres clair a la base
Commenter la réponse de cs_mootmoot
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
À quoi sert cette fonction ?

C++ (@++)<!--
Commenter la réponse de SAKingdom
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
Ah bien dans ce cas.
Petite exemple:

char trame[] = "48603942";

for(int i = 0; i < 8; i += 2) {
   char tmp[4];
   int c;

   strncpy(tmp, &trame[i], 2);
   tmp[3] = 0;

   c = atoi(tmp);

   printf("%c\n", c);
}

C++ (@++)<!--
Commenter la réponse de SAKingdom
Messages postés
8
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
13 février 2008
0
Merci
Non voila c'est exactement ce que je veut faire c'est juste que j'était pas bien sur des argument a passé a la fonction ;).
Merci beaucoup
a+
Commenter la réponse de cs_mootmoot
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
Tes explications n'étaient pas plus claire, car je n'y vois aucun lien avec la solution de neo_fr. Faudra être (beaucoup) plus précis la prochaine fois.

C++ (@++)<!--
Commenter la réponse de SAKingdom
Messages postés
8
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
13 février 2008
0
Merci
Ok désoler ^^ je ferai mieu la prochaine fois
Commenter la réponse de cs_mootmoot