Aus UnicodeString Hexadezimalzahl -> Dezimalzahl machen
-
Moin Moin, ich tüftel schon den ganzen Tag an der Lösung des Problems.
Ich will mit dem RAD Studio XE5 in C++ ein TEdit auslesen, dessen Inhalt aus 3 Zeichen bestehen soll (genau 3). Der Inhalt kann z B "9AF" sein. Dieses "9AF" möchte ich als dezimale Zahl 2.479 als integer im Programm weiternutzen.
Gibt es da eine Funkion die man nutzen kann? Ich hab schon gegoogelt, finde aber nichts was funktioniert für diese AnwendungUnicodeString zeichenkette = Edit_Senden->Text ; // Als String speichern int laenge = zeichenkette.Length(); // Länge bestimmen(Sollte 3 sein) int dezimalzahl = 0; int zahl[3]; for (int i = 1; i < laenge; i++) { switch (zeichenkette[i]) { case '0': zahl[i] = 0; break; case '1': zahl[i] = 1; break; case '2': zahl[i] = 2; break; case '3': zahl[i] = 3; break; case '4': zahl[i] = 4; break; case '5': zahl[i] = 5; break; case '6': zahl[i] = 6; break; case '7': zahl[i] = 7; break; case '8': zahl[i] = 8; break; case '9': zahl[i] = 9; break; case 'A': zahl[i] = 10; break; case 'B': zahl[i] = 11; break; case 'C': zahl[i] = 12; break; case 'D': zahl[i] = 13; break; case 'E': zahl[i] = 14; break; case 'F': zahl[i] = 15; break; default: break; ; } } // Zahl zusammenrechnen dezimalzahl = zahl[0]* 256 + zahl[1] * 16 + zahl[2];So hatte ich mir das gedacht, aber so funktioniert es nicht
-
Benutze
std::wistringstreammitstd::hex!Edit:
Hier ein Bsp.#include <sstream> #include <iomanip> void f() { UnicodeString zeichenkette = Edit_Senden->Text ; std::wistringstream stream(zeichenkette.c_str()); int dezimalzahl = 0; if (stream >> std::hex >> dezimalzahl) { // Benutze dezimalzahl... } else { // Oups, der String kann nicht in eine Zahl umgewandelt werden. } }
-
Oder
std::stol().