Hexazahlen in dezizahlen umwandeln?!
-
Hallo,
ich wollte mir ein programm schreiben was Hexadezimalzahlen in Dezimalzahlen umwandelt. Eigentlich ist das auch ganz einfach nur das problem dabei ist, dass die eingabe so folgt "0A1B2C3D" oder "0A 1B 2C 3D" und immer nur in 2er schritten gerechnet werden soll "0A 1B 2C 3D" = "10 27 44 61" und ich weis jetzt nicht wie ich immer nur 2 Hexadizimalzahlen aus der Zahlenkette nehme.
Danke schonmal im voraus :xmas1:
-
Zur Umwandlung der Zahlen kannst du einen Stringstream verwenden (siehe FAQ - "einmal Zahl und zurück"), den du vorher in Hex-Modus setzt. Die Leerzeichen würde ich vor der Umwandlung rausschmeisen.
(wenn du die einzelnen Blöcke gesondert verarbeiten willst, kannst du mit find() und substr() die Teile heraussuchen - wobei, hier ist ja die Lage der Blöcke fest
Block[t]i[/t]=hexwert.substr(3*i,2);)
-
danke für die schnelle antwort

-
Hallo vonder,
es ist genauso mit Hilfe von setw(2) möglich, immer nur maximal zwei Zeichen oder ein einzeln stehendes Zeichen einzulesen. Etwa so:
istringstream buf("78 a089 0 ff"); for( string str; buf >> setw(2) >> str; ) cout << str << endl;Die erzeugte Ausgabe ist:
78 a0 89 0 fffür setw benötigst Du das include <iomanip>.
Gruß
Werner