Typ Umwandlung

mkbm

Grünschnabel
Hallo Leute,

ich habe ein kleines Problem.

Und zwar habe ich ein Programm das einen MD5 Hash ausgibt. Das sieht so aus:

Code:
unsigned char hashwert1[16];
string text1 = "Hallo";
string output;
        char text2[50];
        strcpy(text2,text1.c_str());
md5(text2, hashwert1);
    for(int i = 0; i < 16; i++ )
        printf( "%02x", hashwert1[i] );

Jetzt möchte ich nicht das der Hashcode ausgegeben wird sondern diesen in dem String "output" speichern.
Ich habe das schon mit "strcpy" und "sprinftf" (über einen Umweg) ausprobiert allerdings erhalte ich nie den Hash sondern entweder komische Zeichen oder etwas ganz anderes.

Würde mich über jeden Tipp sehr freuen.



mkbm
 
Hi.

Dazu eignet sich ein ostringstream:
C++:
#include <sstream>

ostringstream ostr;

ostr << hex;

for(int i = 0; i < 16; i++ )
  ostr << static_cast<int>(hashwert1[i]);

string output(ostr.str());
Gruß
 
Vielen Dank für die schnelle Antwort.

Das funktioniert auch ganz gut aber irgendwie werden im String einige Nullen weggekürzt.

Also die Ausgabe sieht so aus.

Hash mit printf:

598d4c200461b81522a3328565c25f7c

ae0ca2c9525396001d68bb366db5b1ad

Hash im string:

598d4c20461b81522a3328565c25f7c

aeca2c952539601d68bb366db5b1ad

Woran könnte das liegen?

mkbm
 
Hi.

Ja, führende Nullen werden nicht ausgegeben. So sollte es gehen:
C++:
#include <iomanip>

ostr << hex << setfill ('0');

for (...)
  ostr << setw(2) << static_cast<int>(...);
Gruß
 
Zurück