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 Anwendung

    UnicodeString 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::wistringstream mit std::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() .


Anmelden zum Antworten