dez in hex über rekursion
-
Hi , ich möchte gern eine dezimalzahl(die ich im hauptprogramm einlese), in einem rekursiven Unterprogramm, in eine Hexadezimalzahl umwandeln und ausgeben(nicht bloß mit printf("%X",zahl)!!).
Kann mir jemand helfen?
-
Deine Unterscheidung zwischen Dezimalzahl und Hexzahl verstehe ich nicht so ganz, jede Zahl im Computer ist doch binär.
Vermutlich meinst Du nur Ein-/Ausgabe?!?!
Wieso dann nicht printf()? Wofür Rekursion???
Ich hege den Verdacht, daß Du da mit Kanonen auf Spatzen schießt!
-
Ich möchte halt nur wissen , wie es geht!
-
Und warum wenn ich fragen darf???
-
Weil es mich interessiert.
Sonst gibt es keinen Grund.
-
Folgende rekursive Funktion liefert einen Hex-String, der noch gespiegelt werden muß
void HexRevers(unsigned _iZahl, char* _szHex) { if(!_iZahl) *_szHex = '\0'; else { unsigned iRest = _iZahl % 16; *_szHex = (char)((iRest < 10) ? (iRest + '0') : (iRest - 10 + 'A')); HexRevers(_iZahl / 16, _szHex + 1); } }
-
Oder so:
static char* HexRekursiv(unsigned i, char* s) { unsigned r = i % 16; if(!i) return s + 1; *s = (char)(r < 10 ? r + '0' : r - 10 + 'A'); return HexRekursiv(i / 16, s - 1); } char* InHex(unsigned i, char* s) { s[8] = '\0'; return HexRekursiv(i, s + 7); }