char* in byte (hex) umwandeln

OP #4597062
Lesenswert?

Hallo zusammen,
ich habe momentan ein kleines Problem und komme irgendwie nicht auf die 
Lösung...
Ich möchte gerne ein char* in ein byte umwandeln. Momentan habe ich z.B. 
in einem char* ein "b1" gespeichert und das hätte ich gerne in einem 
byte aber als HEX -> "0xb1". Nur leider stehe ich momentan bisschen auf 
dem Schlauch.

Ich hoffe es kann mir hier jemand helfen?

Mfg Kilian
OP #4597194
Lesenswert?

Aber das funktioniert doch schon nicht wenn ich z.B. "0xAB" habe...

Mein Vorhaben ist, der Benutzer muss ganz am Anfang über eine Webseite 
die MAC-Adresse ändern. Die Daten bekomme ich dann als String und möchte 
das dann in einem byte Array speichern damit ich die Mac dann in einem 
EEPROM sichern kann.
#4597270
Lesenswert?

Meinst du so?
1
char mac_s[] = "11:22:33:44:55:AA";
2

3
unsigned char mac_a[6];
4

5
sscanf(mac_string,"%hh2x:%hh2x:%hh2x:%hh2x:%hh2x:%hh2x", mac_a, mac_a+1, mac_a+2, mac_a+3, mac_a+4, mac_a+5 );
oder
1
char mac_s[] = "11:22:33:44:55:AA";
2

3
unsigned char mac_a[6];
4

5
  mac_a[0] = strtoul(mac_s,NULL,16);
6
  mac_a[1] = strtoul(mac_s+3,NULL,16);
7
....
Beim zweiten Beispiel kannst du auch mit dem endptr-Parameter von 
strtoul arbeiten

Ein bischen Fehlerbehandlung gehört aber noch dazu.

Z.B. Auswertung des Rückgabewertes von sscanf oder schauen ob endptr auf 
einen ':' zeigt.
OP #4599288
Lesenswert?

Dirk B. schrieb:
> oderchar mac_s[] = "11:22:33:44:55:AA";
>
> unsigned char mac_a[6];
>
>   mac_a[0] = strtoul(mac_s,NULL,16);
>   mac_a[1] = strtoul(mac_s+3,NULL,16);
> ....
> Beim zweiten Beispiel kannst du auch mit dem endptr-Parameter von
> strtoul arbeiten
>
> Ein bischen Fehlerbehandlung gehört aber noch dazu.
>
> Z.B. Auswertung des Rückgabewertes von sscanf oder schauen ob endptr auf
> einen ':' zeigt.

Ich danke dir, so habe ich es gelöst bekommen!

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