Hexwerte Empfangen und Umwandel



  • Hallo,
    mir hat sich noch ein Problem aufgetan, wenn ich über Serielle Schnittstelle Zahlenwerte als Hex werte bekomme, interpretiert sie mein Programm immer gleich als ASCI - Zeichen. Diese kann ich jedoch nicht in Integer Zahlen wandeln.
    Ich habe zwar folgendes Unterprogramm bei mir eingebunden, welches Hex in int wandelt (habe ich im Forum gefunden), aber das funktioniert nur, wenn ich meinem
    char array einen wert zwischen '0'-'f' zuweise.
    wenn wie bei mir aber die Hexwerte gleich in ASCI umgewandelt werden geht es nicht mehr. wie kann ich den empfangenen Hex wert gleich in int wandeln und das Konvertieren in ASCI unterbinden?

    int HexToInt(AnsiString src)    //Funktion welche Hex werte in int wandelt
    {
        if(UpperCase(src).SubString(1, 2) != "0X")
            src.Insert("0x", 1);
        return strtol(src.c_str(), NULL, 16);
    }
    


  • Hexadezimal ist eine Darstellungsart. Du empfängst also keine Hex-Werte. Oder hast du ein ASCII-Protokoll?

    -junix



  • Nein ein ASCII Protokoll habe ich nicht.
    Rein theoretisch dürfte es ja auch kein problem sein, weil jedes ASCII Zeichen entspricht ja einem Hex wert. aber warum funktioniert es dann nicht?
    wenn ich z.B. mein rec_buf_c (darin empfange ich die Daten) mitt 0xff initialisiere kann ich mit dem debuger nur so ein y (hex:98) mit umlautzeichen sehen, das entspricht sogar nicht einmal dem wert ff(ist space).
    wo liegt da der fehler?



  • Hi, der fehler ist behoben,
    ich habe alle unterprogramme rausgeschmissen und den char wert direkt einer int variablen zugewiesen, und das funktioniert.


Anmelden zum Antworten