md5_csum und c++
-
Moin,
ich möchte eine std::string in einen unsigned char * umwandeln, da dieser durch
md5_csum() (xyssl-lib -> md5.h) benötigt wird. Wie mache ich das am besten?
Danke für eure hilfe - lg dave
-
Hallo
Mit der Methode std::string::c_str()
bis bald
akari
-
Ja, verstehe - mach ich auch. Habe sogar vorher ein ostringstream, welchen ich mit
(ostrstream.str()).c_str() umwandel.nur leider gibt mein comiler folgendes aus
CreateKey.cpp:179: Fehler: Typumwandlung von »const char*« nach »unsigned char« verliert Genauigkeit CreateKey.cpp:179: Fehler: ungültige Umwandlung von »unsigned char« in »unsigned char*«bei line 179
unsigned char test = (unsigned char)(key.str()).c_str();aus md5.h
void md5_csum( unsigned char *input, int ilen, unsigned char output[16] );Was mach ich falsch - und wie ist "input" ein ucharpointer????
-
reinterpret_cast<unsigned char*>(key.data())
-
gibt dann
CreateKey.cpp:179: Fehler: reinterpret_cast from type »const char*« to type »unsigned char*« casts away constness
-
reinterpret_cast<unsigned char*>(const_cast<char*>(key.data()))
-
const unsigned char* pchKey = reinterpret_cast<const unsigned char*>(key.str().c_str());Ev. musst du anstelle von c_str() (mit terminierendem '\0') einfach data() (ohne terminierendem '\0') nehmen. Die Länge erhälst du mit size() oder length().
Ich sehe gerade, dass deine md5 Funktion eben kein const unsigned char* möchte.
Also: Buffer (const unsigned char*) anlegen, reinkopieren (mit std::copy) und dann übergeben.Simon
-
- schrieb:
reinterpret_cast<unsigned char*>(const_cast<char*>(key.data()))Es ist keine gute Idee das const wegzu-casten.
-
simon.gysi schrieb:
- schrieb:
reinterpret_cast<unsigned char*>(const_cast<char*>(key.data()))Es ist keine gute Idee das const wegzu-casten.
in diesem Fall schon, da die Funktion den Input mit Sicherheit nicht verändert
-
danke geht! Dieser Zungenbrecher
