char zu hex (Text)

Gast #4594878
Lesenswert?
• ▲
▼
Hi,

ich möchte mit einem Var einzelne Chars über den UART verschicken.

diese können ja den Wert 0-255 also 0x0-0xFF annehmen.

Nun möchte ich nicht das Char einfach auf den UART geben, sondern das 
ganze als null terminierten String senden (also 4 Zeichen) BSP 255 
gesendet wird 0xFF.

Gibt es da für GCC eine funktion die mir die Variable entsprechend 
umwandelt?

Danke :)
Gast #4594890
Lesenswert?
• ▲
▼
Johannes schrieb:
> also 4 Zeichen) BSP 255

das sind fünf Zeichen, da nullterminiert...

unsigned char String[5];
unsigned char Zahl = 255; // BSP
unsigned char Nibbel0 = Zahl & 0x0F;
unsigned char Nibbel1 = (Zahl>>4) & 0x0F;

String[0] = '0';
String[1] = 'x';
if (Nibble1 > 9) String[1] = Nibble1 + '0';
else String[1] = Nibble1 + 'A'- 10;
if (Nibble0 > 9) String[2] = Nibble1 + '0';
else String[2] = Nibble1 + 'A'- 10;
String[5] = '\0';


So, oder so ähnlich (ungetestet).
Gast #4594944
Lesenswert?
• ▲
▼
Rufus Τ. F. schrieb:
> printf("%02X", wert);

Sollte das nicht eine 8-stellige Ausgabe erzeugen? Mit %02 sind ja nur 
die Mindeststellen auf 2 festgelegt und mit 0 aufzufüllen.

Ansonsten:
1
  char input = 0xff;
2
  char output[5];
3
  
4
  sprintf(output, "%hX", input);
5
  strncpy(output, "0x", 2);
6
  printf("%s", output);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren