Bonjour,
J'ai un buffer du type unsigned char buffer[256] qui contient une chaîne hexa.
Je voudrais convertir ce buffer en CString pour pouvoir afficher les valeurs hexas.
Merci par avance pour vos conseils!
Bonjour,
J'ai un buffer du type unsigned char buffer[256] qui contient une chaîne hexa.
Je voudrais convertir ce buffer en CString pour pouvoir afficher les valeurs hexas.
Merci par avance pour vos conseils!
Tu veux dire un buffer qui contient des données brutes, et les afficher sous forme hexa ?
Le mieux, c'est un truc du genre:
Note: Ce code nécessite une version pas-trop-vieille (lire: Pas Visual 6) de MFC.
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CString ToHexBytes(void const *pcvData, size_t cbSize) { unsigned char const *pcData = static_cast< unsigned char const * >(pcvData); CString ret; ret.Preallocate(cbSize*3); for(size_t i=0 ; i<cbSize ; i++) { ret.AppendFormat(_T("%02X "), pcData[i]); } ret.TrimRight(); return ret; }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
hello,
hé bien justement, je travaille sous Visual 6!!
En fait j'ai trouvé ma réponse dans un ancien topic du forum:
Merci tout de même pour ta réponse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 for (int n = 0; n < sLongueurBuffer; n++) { unsigned char ucMSB, ucLSB; ucMSB = (*(tucBuffer + n)) >> 4; ucLSB = (*(tucBuffer + n)) & (0x0F); (ucMSB < 10)? ucMSB += 0x30 : ucMSB += 0x41; (ucLSB < 10)? ucLSB += 0x30 : ucLSB += 0x41; szChaine.Insert(2*n + n, ucMSB); szChaine.Insert(2*n + n + 1, ucLSB); szChaine.insert(2*n + n + 2, " "); }![]()
Partager