000
21.12.2003, 20:24 Uhr
~search
Gast
|
Hallo!
Hätte folgende Frage: Weiß jemand wie man einen unsigned int (genauer: einen "uint32", also einen 32 bit int) in einen string (oder vielleicht auch in ein char array) konvertieren kann? Sinn dahinter ist nicht, dass man die Zahl beim output des Strings lesen kann, sondern das speichern der Bitsetzung des uint32 in einem String. Schreibe gerade an einem high-level-protocol und möchte meine Datenpackete als einen String versenden. Um die Länge der gesamten Message kontrollieren zu können, möchte ich an einer bestimmten Stelle in diesem String (also in meinem Header) die Länge der folgenden Nachricht speichern.
Wichtig ist also, dass ich die Bitsetzung meines unsigned int (uint32, also genau 4 Byte) in 4 chars des Strings oder auch in ein char array[4] unterbringe und diese im Nachhinein auch wieder herausbekomme. Habe schon versucht die Sache mit casten anzugehen. Es funktioniert jedoch nur, dass ich ein Byte meines uint32 in einen char speichere. Bei allem anderen weigert sich der Compiler.
Es währe mir wirklich viel weitergeholfen, wenn mir jemand sagen könnte, wie ich das hinbekommen kann. Am besten das Reinschreiben meines 4 Byte Int, als auch das Auslesen und wieder in einen uint32 speichern (damit man das ganze dann auch vergleichen kann). Also ich bin für jede hilfe dankbar!
Hier noch meine Versuche:
Die folgende Version kompiliert zwar, beim Ausführen fliegt einem jedoch der Speicher um die ohren....
C++: |
// Versuch start
string msg_; char* char_number_ = new char[4]; uint32 message_length_;
//--------------------------------------------------------- // build string for high level protocol
string ClientString::buildMsg(string message) throw(bad_alloc) { broadcast_msg_ = message; char_number_ = reinterpret_cast<char*>(message_length_); //function to sort char array big endian and create a string from it return(msg_); }
// Versuch ende
|
Danke schonmal für eure hilfe!
Search
Bearbeitung von Pablo: |
cpp tags gesetzt
|
Dieser Post wurde am 21.12.2003 um 20:36 Uhr von Pablo editiert. |