Convertir ascii en hexa

Résolu
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 à 18:30
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

11 réponses

Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
13 févr. 2008 à 22:33
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
3
JALEO WAHRANI Messages postés 17 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 14 février 2008
13 févr. 2008 à 20:38
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>
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 20:52
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++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 20:56
Non en fait, je crois avoir compris ta réponse.

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

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
13 févr. 2008 à 21:56
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
0
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:15
@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
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 22:17
À quoi sert cette fonction ?

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 22:32
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++ (@++)<!--
0
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:36
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+
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 févr. 2008 à 22:42
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++ (@++)<!--
0
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
Ok désoler ^^ je ferai mieu la prochaine fois
0
Rejoignez-nous