long in char* speichern



  • Hallo,

    ich kriege es einfach nicht hin einen long wert in ein char array (mit zeiger darauf) zu speichern. Bitte helft mir 🙂

    Hier mein bisheriger code:

    int ns1__createAnonymousSession(struct soap *soap, char* &createAnonymousSessionReturn){
    	time_t sek;
    	long random_long;
    	time(&sek);
    	srand(sek);
            random_long = rand();
    	?????
    	createAnonymousSessionReturn = (char*)random_long; //hier soll der long wert gespeichert werden
    
    	return SOAP_OK;
    }
    

    Schon mal danke!!



  • so gehts

    void func(long* lint)
    {
      *lint = 0xffffffff;
    }
    
    int main()
    {
            char cha[4];
    
            func((long*)&cha);
    
            return 0;
    }
    


  • Hallo,

    schon mal danke, aber irgendwie steig ich da nicht ganz hinter. Was wird denn jetzt worin gespeichert? Vielleicht noch mal bisschen genauer mein Anliegen:
    Ich erzeuge mir eine Zufallszahl (random_long). Diese soll an den Aufrufenden der Methode zurückgegeben werden (char* &createAnonymousSessionReturn)->siehe Signatur der Methode. Die Signatur ist fest vorgegeben, daran kann ich also nichts ändern.
    Mein Problem ist nun, dass ich den long-Wert nicht in den notwendigen Rückgabewert umgewandelt bekomme.

    Falls die obige Lösung schon die richtige ist, dann sorry allerdings sehe ich jetzt nicht die Stelle an der die Typumwandlung geschieht. Evtl kann mir ja jemand auf die Sprünge helfen.

    Vielen Dank!!



  • Hallo

    so richtig wird aus deinem Post nicht klar, ob du binär (long(12) -> char(12)) oder lexigrafisch (long(12) -> char*("12")) konvertieren willst.

    Im zweiten Fall : lies den Thread Einmal String und zurück aus der C++ FAQ.

    bis bald
    akari



  • ..., char* &createAnonymousSessionReturn ) - ist ne Referenz auf einen Zeiger auf char
    wenn die Signatur nicht geändert werden darf, musste kopieren.

    memcopy(createAnonymousSessionReturn, &random_long, sizeof long);
    


  • Ich möchte lexigrafisch konvertieren. Der long-Wert (z.B. 12) soll dann als "12" zurückgegeben werden.
    OK, den Thread guck ich mir gleich mal an. Schon mal danke!!



  • Hallo nochmal,

    ok als String habe ich die Zufallszahl nun, aber wie bekomme ich denn nen Pointer auf diesen String? Habe leider keine Funktion dazu gefunden, auch beim googeln gabs keinen Erfolg.
    Versucht habe ich es mit dieser Methode:

    time_t sek;
    int random_int;
    srand((unsigned)time(&sek));
    random_int = rand();
    cout << random_int; //Testausgabe der Zufallszahl
    ostringstream Str;
    Str << random_int;
    string zahlAlsString(Str.str());
    createAnonymousSessionReturn = zahlAlsString.c_str();
    

    Allerdings kommt dabei diese Fehlermeldung: error C2440: '=': 'const char *' kann nicht in 'char *' konvertiert werden

    Ist sicher nur ne Kleinigkeit, aber ich komm grad echt nicht drauf.

    Vielen Dank!! Wenn es dazu schon Beiträge gibt dann tuts mir leid, aber die Suche hat mir 0 (Null) Ergebnisse ausgespuckt. MfG!!



  • hola

    int ns1__createAnonymousSession(struct soap *soap, char* createAnonymousSessionReturn){
    	time_t sek;
    	long random_long;
    	time(&sek);
    	srand(sek);
            random_long = rand();
    
    	std::itoa(randowm_long, createAnonymousSessionReturn, 10);
    
    	return SOAP_OK;
    }
    

    std::itoa ist glaub ich in der <string> definiert. bin mir aber net ganz sicher.
    createAnonymousSessionReturn muss schon genug speicher alloziert haben.
    ih nehm meistens 16 Byte. ne schoene runde zahl. std::itoa kann aber bis zu 33 byte oder so brauchen, je nach dem welches zahlensystem angezeicgt werden soll.

    Meep Meep



  • Hallo

    genau das ist das Problem, das du dich auf char* versteifst. Bleib doch bei std::string, und andere dein Programm auf die Verwendung von std::string um.

    int ns1__createAnonymousSession(struct soap *soap, std::string& createAnonymousSessionReturn){
    ...
    createAnonymousSessionReturn = Str.str();
    }
    

    Und ich find ja aussagekräftige Variablennamen gut, aber createAnonymousSessionReturn ist mir dann doch zu lang 😉

    bis bald
    akari


Anmelden zum Antworten