convert unsigned int to string....



  • 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....

    // 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 🙂



  • Versuchs mal so, weiß jetzt aber nciht obs funktioniert

    char AlsString[sizeof(uint32) + 1];   // 4Byte + 1 '\0' am Ende
    uint32 Zahl = 0x7846F3DC;
    memcpy(AlsString, &Zahl, sizeof(uint32));   // selbes Speichermuster in einen string kopieren
    AlsString[4] = '\0';   // Ende-Zeichen anhängen
    

    Könnte klappen


Anmelden zum Antworten