Verschiedene Zahlensysteme feststellen
-
Weißt jemand wie ich
1. herausfinde ob eine zahl dual, hex oder dez ist?
2. diese zahlen umwandeln kann?Es gibt ja diese funktionen isalnum und isalpha. Aber irgendwie komm ich damit einfach nicht weiter.
Und ich kann mir nicht vorstellen, dass Microsoft keine Funktionen dazu geschrieben hat.
-
Was du intern an Zahlen hast, ist rein binär gespeichert - oktal, dezimal, hexadezimal werden die Zahlen nur gelesen/geschrieben. (dabei werden in C häufig Oktalzahlen mit dem Präfix 0 und Hex-Zahlen mit 0x gekennzeichnet)
Einzelne Ziffern (als char) kannst du eventuell noch unterscheiden, ob sie zu einem bestimmten Zahlensystem gehören:
x=='0' || x=='1' //Binärziffer x>='0' && x<='7' //Oktalziffer isdigit(x) x>='0' && x<='9' //Dezimalziffer isxdigit(x) //Hex-Ziffer
Zur Darstellung von Zahlen in Hex- oder Oktalformat kannst du in C++ die Manipulatoren hex bzw. oct (wenn du die Präfixe 0/0x haben willst, zusammen mit showbase) bzw. in C die printf-Formatkenner %x bzw. %o verwenden. Für Binärzahlen mußt du etwas mehr Aufwand betreiben (in C++ mit bitset's, in C manuell).
-
Bis auf das duale System erkennt strtol/strtoul bei der Angabe von base==0 das entsprechende Zahlenformat, wenn für Hex die Zahl mit 0x und Oktal die Zahl mit 0 beginnt!