CEdit eine hexadezimalen Wert einlesen



  • Hallo,

    ich möchte in einem Editierfeld ein hexadezimalen String eingeben, z.B. 0x33, diesen dann in ein char umwandeln. Nur dieses bekomme ich nicht hin. Ich hab noch nichts gefunden, wie ich aus einem CString ein hexadezimalen Char mache.
    Das ganze soll für eine serielle Übertragung(über USB-Chip von FTDI) dienen. Ich möchte in einem Formular ein Hex-Wert(e) eingeben und diese dann verschicken. Gebe ich die hexwerte schon als char in einer Variable an funzt es wunderbar.

    Stefan



  • Du kannst beim einlesen des wertes die ersten beiden Zeichen abschneiden und den rest Zeichenweise in dein char verschieben. In etwa so (nicht geprüft):

    CString Hexwert = "0x33";
    
    Hexwert = Hexwert.Mid(2, Hexwert.GetLenght() -2);
    
    char* Hex = new char[Hexwert.GetLenght()];
    
    for(int i = 0; i < Hexwert.GetLenght; i++) Hex[i] = Hexwert.GetAt(i);
    




  • Wow..danke für die schnelle Antwort, aber leide habe ich mich wahrscheinlich falsch ausgedrückt.
    Die Umwandlung in ein char* hatte ich bereits, wie unten im Beispiel gemacht.

    CString str;
    char *p = str.GetBuffer(str.GetLength());
    

    Ich weiss nur nicht, wie man aus char* ein char macht.
    CString = 0x33 -> char* = 0x33 -> char = 0x33. Am Ende möchte ich ein hexdezimalen Buchstaben haben, den ich verschicken kann.
    Mit dem Link konnte ich nix anfangen, weil da die Umwandlung in einen LONG beschrieben ist, oder ich habe da was falsch verstanden.

    Sorry ich bin noch relativ unerfahren 🙄



  • Du kannst den long einfach einem char zuweisen. :p
    Allerdings solltest du auf den Zahlenbereich (0 bis 255) achten - das will dir die Warnung sagen, die da kommt. 😉



  • okay ich habs, vielen Dank für die Hilfe...

    so nun noch die Lösung im Ganzen...

    CString str_Hexwert = "0x33";  //normalerweise CEDIT Feld
    char *c_Hex = 0;
    char x = strtol(str_HexWert,&c_Hex,16);
    

    😃


Anmelden zum Antworten