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.