MAC Adresse umwandeln
-
IEEE 754-freak schrieb:
bytes protzing schrieb:
nagut,dann nimm double
ich glaub' dabei wirst du mit 'scanf ("%x", ...)' kein glück haben.
mein compiler kann das
-
Thx, Strtol war genau das was ich gesucht habe
. scanf kam nicht in Frage, weil der String ja schon existert, und nicht in der Konsole eineggeben wird.
-
das wird dir 2 byte abschneiden, wenn sizeof(long) == 4 ist.
mac adressen sind 6 byte lang.
-
Thx, Strtol war genau das was ich gesucht habe . scanf kam nicht in Frage, weil der String ja schon existert, und nicht in der Konsole eineggeben wird.
geht auch mit strings "sscanf"
-
Ich habe gar keinen 6-Byte-Typ auf meinem System. Außerdem haben die Adressen auf Textinterfaces meistens Trennzeichen. Im täglichen Leben stelle ich mir das so vor:
unsigned char mac[6]; a2mac(mac, "01:02:03:04:05:06"); void a2mac(unsigned char *dst, char *mactext) { do *(dst++) = (unsigned char) strtoul(mactext, &mactext, 16); while (*(mactext += *mactext ? 1 : 0)); }
(oder so ähnlich)
-
bgdnoy schrieb:
do *(dst++) = (unsigned char) strtoul(mactext, &mactext, 16); }
void mac_extractor( char* dst, char* src ) { do{ if( *src != 0x3A ) *dst++ = *src; }while(*src++); } unsigned char mac[6]="0"; mac_extractor( mac, "AA:BB:CC:DD:EE:FF" );
-
Heute Lust auf Pufferüberläufe? Bleib bei dem fast food!int main (int ac, char **av) { unsigned char mac[7]; memset(mac, 0, 7); a2mac(mac, "61-62-63-64-65-66"); printf("%s\n", mac); mac_extractor(mac, "61:62:63:64:65:66"); printf("%s\n", mac); return 0; }
EDIT:
Windows mach Bindestriche lieber. Doch lieber ohne Zeichenkonstanten?
-
soviel zu deinem überlauf:
unsigned char mac[7]; memset(mac, 0, 7); a2mac(mac, "61-62-63-64-65-66-67-68");
sowas prüft man vor dem funktionsaufruf, oder meinetwegen auch innerhalb
-
Prüfung hin - Prüfung her.
Bei mir läuft er halt nicht über. Das ist schon was!
-
bei mir läuft auch nix über
-
bei mir läuft auch nix über
Weißt du was? Registrier dich, und wir können gerne drüber diskutieren. Sonst Schluss damit.