String in Hex umwandeln und Hex in String



  • Hallo,

    ich hoffe ich bin hier im Forum richtig?

    Ich habe folgendes Problem ich habe z.B. in einem String bzw. uchar[2] "AC" oder "4E" u.s.w.
    und möchte diesen in in ein byte (unsigned char) 0xAC oder 0x4E konvertieren.
    Dies sollte auch umgekehrt gehen ich habe einen hex-wert 0x4E und möchte diesen in einen String "4E" konvertieren.

    Danke.



  • Von char-Array nach binär: strtoul mit 16 als Basis

    Von binär zu char-Array mit sprintf



  • Danke für die schnelle Antwort,

    aber geht das auch ohne sprintf,printf, sscanf?

    auf PC-seite mag dies bestimmt gut gehn aber ich muss das auch auf Microcontroller -Seite verwenden und da kann ich mir häufigere Konvertierungen mit sprintf,printf etc. nicht leisten.

    zum Hintergrund:
    Ich möchte Hexwerte in Edit-Felder eingeben und diese als byte-basierendes Protokoll mit Checksumme seriell an eine MC-Steuerung senden. Auf MC-Seite möchte ich diese Hexwerte verarbeiten und auch als Textausgabe auf einem Display anzeigen. Dies soll natürlich auch umgekehrt funktionieren. Hex-Werte vom MC an PC und dort wiederum in Edit-Feld anzeigen.



  • Hättest du das mit dem µC mal gleich geschrieben 🙄

    Viel Compiler für µC haben auch ein itoa bei dem man die Basis mit angeben kann.
    Musst du mal schauen.



  • forumarbeit schrieb:

    Danke für die schnelle Antwort,

    aber geht das auch ohne sprintf,printf, sscanf?

    auf PC-seite mag dies bestimmt gut gehn aber ich muss das auch auf Microcontroller -Seite verwenden und da kann ich mir häufigere Konvertierungen mit sprintf,printf etc. nicht leisten.

    zum Hintergrund:
    Ich möchte Hexwerte in Edit-Felder eingeben und diese als byte-basierendes Protokoll mit Checksumme seriell an eine MC-Steuerung senden. Auf MC-Seite möchte ich diese Hexwerte verarbeiten und auch als Textausgabe auf einem Display anzeigen. Dies soll natürlich auch umgekehrt funktionieren. Hex-Werte vom MC an PC und dort wiederum in Edit-Feld anzeigen.

    int number_from_hex (char *s)
    {
        int n = 0;
        while (*s)
        {
            char c = *s++;
            n *= 16;
            if (c >='0' && c <= '9')
                n = n + c-'0';
            else if (c >= 'A' && c <='F')
                n = n + c-'A' + 10;
            else if (c >= 'a' && c <='f')
                n = n + c-'a' + 10;
            else
                return -1;
        }
        return n;
    }
    


  • Z schrieb:

    int number_from_hex (char *s)
    {...
    }
    

    Das macht ja nun auch strtol.

    Der TO sucht aber eine schlanke Funktion für Gegenteil.



  • Bei http://www.mikrocontroller.net/articles/FAQ gleich unter Punkt 1 findest du auch noch Informationen.


Anmelden zum Antworten