Veröffentlicht 14. November 200816 j Hallo, ich habe folgendes Problem: Ich möchte einen std:string in die entsprechende hex-Dastellung also z.B. 06 F7 ... umwandeln. Weiteres Problem ist das ich danach noch caste in der Form (BYTE*)a.c_str(). Die Darstellung sollte danach erhalten bleiben.
14. November 200816 j Leg einen stringstream an, und dann jedes Zeichen der Reihe nach nach unsigned int umwandelnmit den Manipulatoren hex, setw(2) und setfill('0') in den stringstream stecken
14. November 200816 j Habe folgenden Code gefunden, der bis auf dir Formatierung das richtige liefert: string hexdump( const string& s ) { stringstream ss; string::size_type len = s.length(); ss.flags( ios::hex ); for( string::size_type i=0; i<len; ++i ) { ss << setw(2) << setfill('0') << static_cast<unsigned int>(s); } return ss.str(); }
14. November 200816 j Habe folgenden Code gefunden, der bis auf dir Formatierung das richtige liefert:Was heißt denn "bis auf die Formatierung"? Im Übrigen ist das ziemlich genau das, was ich vorgeschlagen habe.
14. November 200816 j Formatierung war natürlich der falsche Ausdruck. Habe blöden Fehler gemacht. Muss mit dem Programm jeweil 2 Registrywerte erstellen. Der eine ist der Form REG_SZ der andere REG_BINARY. Falls REG_BINARY gewählt, wird das als Wert einzutragende byte array direkt umgewandelt. Hatte nur vergessen bei zweiten Wert auch auf REG_BINARY umzustellen. Das Umwandeln war somit gar nicht nötig, da sonst die hex Darstellung nochmals in hex umgewandelt wird. Aber vielen Dank für die schnelle Hilfe!
14. November 200816 j Für was braucht man beim Schreiben in die Registry einen String? Mit RegSetValueEx kannst du auch einfach die gecastete Adresse eines DWORD-Wertes übergeben.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.