Umwandlung von Zahlen (Dez<->Bin<->Hex)



  • Hi,

    bin grad dabei ein wenig c++ zu lernen und hab mir dafuer ein prog zum umwandeln von zahlen in verschiedene zahlensysteme vorgenommen.

    Binaer nach Dezimal und umgekehrt hab ich schon, allerdings klappt das mit dem Hex nicht so ganz.

    Hab bisher ne do/while kombination geschrieben, die durch 16 teilt und dann den modulo verwendet, tut aber wie gesagt nicht. 😞

    Hab zwar gesehen dass es std::hex und std::dec gibt, weiss aber nicht wie ich diese effektiv einsetzen kann, da die eingabe im allgemeinen programmteil erfolgt und danach die auswahl von welchem in welches system man umwandeln will.

    Würde mich ueber ein paar antworten freuen. 😉

    so long, shad0w



  • Hi!

    Beispiel:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
      int i = 13;
      int j = 24;
      cout << hex << i << " " << j << endl; // Hexadezimal
      cout << oct << i << " " << j << endl; // Oktal
      cout << dec << i << " " << j << endl; // Dezimal
    
      return 0;
    }
    

    hex, oct, dec geben an wie alle nachfolgenden Zahlen ausgegeben werden. Um ins Binärsystem umzuwandeln musst du dir eine eigene Methode schreiben (wüsste nicht das es dafür auch einen Befehl gibt), wie du scheinbar schon getan hast. Ich habe noch irgendwo eine Methode die in die Zahlensysteme 2-32 umwandeln kann, da alle an sich gleich aufgebaut sind und nur verschiedene basen haben.

    Code-Hacker



  • Hi,

    danke fuer das beispiel, allerdings geb ich ja per cin nen string an (wegen den hexwerten). Und nen dynamic cast kann ich keinen machen. D.h. ich muesste fuer die dec->? ne methode zum umwandeln eines string nach integer finden.



  • shad0w schrieb:

    D.h. ich muesste fuer die dec->? ne methode zum umwandeln eines string nach integer finden.

    In der FAQ findest du gleich mehrere Möglichkeiten...



  • Du kannst auch

    int zahl;
    cin >> hex >> zahl;
    

    machen. Ansonsten stringstream:

    string hex_zahl = "0xdeadbeef";
    int wert;
    stringstream sin;
    sin.str(hex_zahl);
    sin >> hex >> wert;
    

    Dafür musst du allerdings den Header <sstream> includen.


Anmelden zum Antworten