atoi als hexadezimal



  • Hallo!

    Gibt es eine Funktion, die eine Zeichenkette, die eine Hexadezimalzahl darstellt, in den entsprechenden int-Wert umwandelt, so wie es soetwas für Dezimalzahlen gibt?

    GIbt es das auch für oktal und binärzahlen?

    Gruß, Maxi



  • Mir fällt dazu nur stringstreams ein.

    Es gibt sicherlich schönere Lösungen (vllt. boost, kenne ich nicht genau die Lib).

    Aber mal ein wenig was zum Spielen:

    #include <iostream>
    #include <sstream>
    #include <bitset>
    
    using namespace std;
    
    int main(int argc, char * argv[])
    {
    	stringstream t;
    	ios::fmtflags oldFlags = t.flags();
    
    	// HEX
    
    	t.str("0xAD");
    	t<<hex<<showbase;
    	unsigned long i = 0;
    	t>>i;
    
    	t.clear();
    	t.flags(oldFlags);
    	t.str("AE");
    	t<<hex;
    	t>>i;
    
    	// Oktal
    	t.clear();
    	t.flags(oldFlags);
    	t.str("10");
    	t<<oct;
    	t>>i;
    
    	// Bin
    	bitset<8> bits;
    	t.clear();
    	t.str("0101");
    	t>>bits;
    	i = bits.to_ulong();
    
    	return 0;
    }
    


  • Danke, funktioniert 🙂



  • Maxi schrieb:

    Gibt es eine Funktion, die eine Zeichenkette, die eine Hexadezimalzahl darstellt, in den entsprechenden int-Wert umwandelt, so wie es soetwas für Dezimalzahlen gibt?

    GIbt es das auch für oktal und binärzahlen?

    Warum passt strtol nicht?



  • würde bestimmt auch passen, kannste die Funkiton aber nicht...

    Aber sie sieht gut aus, mit Basisangabe usw.... gefällt mir. Werds jetzt aber nciht mehr ändern, funktioniert ja auch so 🙂

    Gruß, Maxi


Anmelden zum Antworten