Hex-Zahl in char Zeichen darstellen

Many0815

Mitglied
Hi Leute.

Hab ein kleines Problem.
Und zwar hab ich eine Funktion die mir die MAC-Adresse von meinem System ausliest.
Das funktioniert auch super, nun will ich die MAC-Adresse via UDP-Socket an eine Application schicken.

Trage ich jetzt die Hex-Zahlen 1 zu 1 in ein char-array ein so steht zum Beispiel bei den Hex-Zahlen 00:00 nichts im Array. Oder zumindest erkennt die Application nicht dass da was drin steht.

Nun will ich die Hex-Zahl 00 in 2 char Zeichen '0''0' schreiben.
Hab aber leider keine Ahnung wie ich das angehen soll und auch nichts im i-net gefunden.

Hoffe mir kann wer helfen.
Oder vielleicht hat wer ne geschicktere Idee wie man sowas angeht!

Cheers Many
 
Hi,

alle Zeichen sind in der sogenannten ASCII-Tabelle drin. Addiere zu deinem 0x00 einfach 0x30, dann hast du die Ziffer '0'. Bei 0x03 hast du dann entsprechend '3'. Bei den Hex-Zeichen musst du allerdings nicht 0x30, sondern 0x37 (für Großbuchstaben) oder 0x57 (für Kleinbuchstaben) addieren.

Gruß
BK
 
Hi

Danke für die Antwort.

Ja das ist mir schon klar.
Nur habe ich jetzt zum Beispiel die Hex-Zahl 0xF4
Und ich will zur Application F4 raufschicken. Aber als Char Zeichen mit 'F''4'.

Cheers
 
Hi,

C:
char[3] block;
int zahl = 0xF4;

sprintf(block, "%02x", 0xFF & zahl);
/* in block steht jetzt: ['f', '4', \0] */

puts(block); /* Gibt "f4" aus */

// Edit:
Oder gleich für alle:
C:
char[18] addr;

/* 08:00:20:ae:fd:7e */
sprintf(addr, "%02x:%02x:%02x:%02x:%02x:%02x",
  0x08, 0x00, 0x20, 0xae, 0xfd, 0x7e);

Gruß
BK
 
Zuletzt bearbeitet:
Zurück