Ausgabe als Hexadezimalwert
-
hallo leute,
also ich habe leider nichts dazu hier im forum gefunden.mein problem ist folgendes:
nehmen wir an ich haette eine ganz simple und sinnlose funktion:int f(int a) { return a; };
wenn ich jetzt folgendes mache:
cout << f(498) << endl;
steht auf dem bildschirm 498; was ja auch beabsichtigt war.
mach ich aber folgendes:
cout << f(0x1F2) << endl;
gibt er auch wieder 498 aus, was ja nicht unbedingt falsch waere.nur ich wuerde bevorzugen, dass er 0x1F2 ausgibt.
gibt es dafuer eine loesung?
p.s.:es wird erst zur laufzeit bekannt, ob der wert dezimal oder hexadezimal ist, falls das wichtig ist.
-
cout << hex << 0x1 << endl;
mfg
-
bei Compile-Zeit wird das 0xX genau wie dezimale int-Literale aufgelöst.. du kannst das dann während der Runtime nicht mehr unterscheiden. Daher bleibt eigentlich nur der Weg über strings die entweder dec oder hex-Format haben.
Du kannst dir dabei eine Klasse schreiben die den int wrappt..
class Int { int val_; bool hex_; //hex oder dec-Darstellung public: Int(const string& val); //hier drin rausfinden, ob der string hex oder //dec-Format hat, hex_entsprechend setzen //und val zuweisen friend ostream& opererator<<(ostream&os,const Int&i); //... }; ostream& opererator<<(ostream&os,const Int&i); //stream-ausgabe je nachdem ob //hex_ true oder false ist (hex oder dec)
-
vielen dank fuer eure hilfe; mein problem ist hiermit geloest