int nach Hex



  • Hallo, gibt es im C++ Standart eine Funktion womit ich int nach Hex Konvertieren kann ?

    Mit << hex kann man ja nur ausgeben soweit ich weiss.

    Folgendes hab ich vor:

    #include <iostream>
    #include <sstream>
    #include <fstream>
    using namespace std;
    
    int main(int argc, char **argv)
    {
    char h[]="\x31";
    string str = "31";
    int x;
    
    stringstream ss;
                 ss << str;
                 ss >> x;
    
                  // x = 31
                 // x nach hex ..
    
    cout<< static_cast<char>(x)<<endl; // x soll das ausgeben was h ausgibt
    cout<< h <<endl;
    
    system("PAUSE");
    }
    
    int AsciiStrToInt( string str )
    {
    int int_nop;
    string nop;
           nop  = str[0];
           nop += str[1];
    
    stringstream con;
    con << nop;
    con >> int_nop;
    
    return int_nop;
    }
    

    Ok ich könnte hier jetzt x-30 rechnen dann bekomme ich auch 1 ausgeben.
    Aber ich will das dass für alle ASCII Werte funktioniert.



  • > 😕



  • Und wie muss man dann den Operator benutzen ?

    v = hex>>x; // Falsch 😞

    <<>< 😕



  • #include <iostream>
    #include <string>
    #include <sstream>
    std::string IntToHex( int n ) {
     std::stringstream s;
     s << std::hex << n;
     return s.str();
    }
    int main() {
     std::cout << IntToHex( 42 );
    }
    

    Wenns nur um Ausgabe geht, kannst du natürlich auch direkt nach cout hexen(http://www.cplusplus.com/reference/iostream/manipulators/hex/).



  • Ich werde aus der Aufgabenstellung nicht schlau. Willst du allen Ziffern ihren ASCII-Wert zuweisen können? Das geht so:

    int i = 5;
    char asciiValue = i + '0';
    

    Wenn du den Integer in die Hexadezimalschreibweise bringen willst, verweise ich dich auf Punkt 8 von http://www.c-plusplus.net/forum/151578



  • Also was genau passieren soll:
    ( Kann es sein das ich dafür gar nichts in Hex umrechnen muss o_O )

    #include <iostream>
    #include <sstream>
    using namespace std;
    
    int main(int argc, char **argv)
    {
    int x;
    int z=0x41;
    
    string ss = "41";
    
    stringstream s;
                 s << ss;
                 s >> x;
    
    // Geht das auch ohne hier z.b. x+24 zu rechnen ?
    
    cout<< x <<endl;                    // Gibt 41 aus soll aber 65 ausgeben
    cout<< static_cast<char>(x) <<endl; // Gibt ) aus soll aber A ausgeben
    
    cout<< z <<endl;                      // Gibt 65 aus
    cout<< static_cast<char>(z) <<endl;  // Gibt 65 aus
    
    system("PAUSE");
    }
    


  • Hast du dir den Link von Michael E. angesehen? std::hex funktioniert auch mit stringstream , wenn ich mich nicht ganz stark irre.


  • Mod

    int main()
    {
      stringstream s("41");
      int x;
      s >> hex >> x;
      cout<< x <<endl;
      cout<< static_cast<char>(x) <<endl; 
    }
    


  • Ty jetzt funktioniert es.

    Ja den Link von Michael E. hatte ich angeschaut.
    Aber ich kam nicht auf die Idee hex>> in stringstream zu benutzen.

    -.-



  • func schrieb:

    Aber ich kam nicht auf die Idee hex>> in stringstream zu benutzen.

    Du kannst es auch andersrum benutzen:

    s << hex << ss;
    

Log in to reply