Conversion d'une chaine de caractere en code hexadecimal

Résolu
Ahryman40k Messages postés 14 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 25 mars 2008 - 11 mars 2008 à 15:51
Ahryman40k Messages postés 14 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 25 mars 2008 - 11 mars 2008 à 19:14
Bonjour,

j'ai le petit probleme suivant, je dois genere par code un fichier .reg

je veux convertir des caracteres d'une chaine en hexa et les stocker en BDR.

pour ce faire je passe par la routine suivante :

std::ostringstream oss; //initialise un string stream qui stock la sortie de std::hex



for( std::string::const_iterator iter = str.begin(); iter != str.end(); iter++ ) //fait une boucle caractére par caractére



{



   oss << std::hex << static_cast(*iter);



   std::string::const_iterator iter2 = iter;



   if ( ++iter2 != str.end() )



      oss << ",";



}



return(oss.str());






ce code fonctionne pas trop mal, mais selon les caracteres, ca me retourne un code hexa sur 1, 2 ou 6 caractere
exemple de ce qui est genere ci-dessous :

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\Medialive\Agent]
"BB1"=hex:h,g,b,4c,ffffff94,4c,5c,ffffffca,ffffffe5,ffffffa3,ffffffbc,4c,36,3a,ffffff88,5e
"BB2"=hex:3b,5f,ffffff96,1e,ffffffa1,13,ffffffcf,ffffff93,ffffff99,10,ffffffbe,ffffffb0,f,fffffffd,3b,ffffffeb,fffffffd,fffffffd,fffffffd,fffffffd,ffffffab,ffffffab,ffffffab,ffffffab,ffffffab,ffffffab,ffffffab,ffffffab,ffffffee,fffffffe,ffffffee,fffffffe

Alors que je devrais avoir plutot quelque chose du genre :
"BB2"=hex:3b,5f,96,1e,a1,13,cf,93,99,10,be,b0,f,d,3b,eb,fd,fd, ...

Qu'est ce que j'ai raté, y a t'il un moyen de forcer sur 2 caracteres ?
exemple de chaine qui va etre inscrit en base de registre :  "LǺ¿%òéý�7;"qïJF�7;Ÿ"

Merci.

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 mars 2008 à 18:52
En vraiment codé:
CHAINE EN HEXA (WIN32)
http://www.cppfrance.com/code.aspx?ID=46019

ciao...
BruNews, MVP VC++
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
11 mars 2008 à 17:22
oss << std::hex << static_castchar>(*iter);
0
Ahryman40k Messages postés 14 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 25 mars 2008
11 mars 2008 à 17:57
en es tu sur ?
car
std::cout << std::hex << static_cast( 'a' )  << std::endl
retourne 'a'

alors que
std::cout << std::hex << static_cast('a') << std::endl
retourne '61'
ce qui est correct.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
11 mars 2008 à 18:20
En effet, il est pénible sur les unsigned char. Chez moi ca marche bien ton code.
0

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

Posez votre question
Ahryman40k Messages postés 14 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 25 mars 2008
11 mars 2008 à 19:14
Il s'agit exactement de ce dont j'avais besoin.


Merci :)
0
Rejoignez-nous