string <-> unsigned long (hex)



  • Hi,

    ich hab folgenden Wert:

    unsigned long wert = 0xFFEEAACC;
    

    und möchte den gerne in einem std::string haben. Also das der Wert so enthalten ist:

    std::string wert_als_string = "0xFFEEAACC";
    

    Wie geht das? Und wie bekomme ich den Wert als String wieder zurück in einen unsigned long? 😕



  • Da gibt's verschiedene Methoden für. Lies mal in der FAQ (Thema "Zahl nach String und zurück").



  • ja nee ist mir schon klar, deshalb frag ich ja auch. Es handelt sich ja nicht um Zahlen sondern Hexwerte, was ja dort nicht beschrieben ist.



  • Mit Hex-Zahlen geht das fast genauso wie mit Dezimalzahlen.

    • Streams haben einen Manipulator, mit dem man Zahlen in Hexadezimal (auf Wunsch auch in Oktal) statt Dezimal ausgeben kann -> Dokumantation STL
    • sprintf() und sscanf() verwenden die Formatkennung "%x" für Hex-Zahlen (und "%o" für oktal) und sscanf("%i",&x) sucht sich die Basis anhand der Zahlendarstellung aus
    • strtol() kann als letzten Parameter die Zahlenbasis (Hex=16, Okt=8) übergeben bekommen


  • hi,

    wärest du noch so mega lieb und könntest ein klitze kleines beispiel machen? 🙂 wäre dir dafür mega dankbar



  • ganz klein:

    int zahl=0xAFFE,zahl2;
    char text[10];
    sprintf(text,"%x",zahl);   //liefert "affe"
    sprintf(text,"0x%X",zahl); //liefert "0xAFFE"
    sscanf(text,"%i",text);    //liefert 45054 (=0xAFFE)
    

    (die nötigen Befehle für die sstream-Variante müsste ich selber erst raussuchen)


Anmelden zum Antworten