Conversion d'une chaine de caractere en code hexadecimal [Résolu]

Signaler
Messages postés
14
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
25 mars 2008
-
Messages postés
14
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
25 mars 2008
-
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

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

ciao...
BruNews, MVP VC++
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
oss << std::hex << static_castchar>(*iter);
Messages postés
14
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
25 mars 2008

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.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
En effet, il est pénible sur les unsigned char. Chez moi ca marche bien ton code.
Messages postés
14
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
25 mars 2008

Il s'agit exactement de ce dont j'avais besoin.


Merci :)