2016-05-11 9 views
0

Ich habe die folgende Funktion:C: ether_aton funktioniert nicht

int parse_mac(const char *hwaddr, uint8_t *dst_mac) 
{ 
    (void)hwaddr; (void)dst_mac; 

    //TODO: Parse the MAC address (string) pointed to by hwaddr and store 
    //the result in dst. Return 0 on success and -1 on error. 

    struct ether_addr* ether_address = ether_aton(hwaddr); 
    if(ether_address==NULL){ 
     return -1; 
    } 
    int i; 
    for(i=0;i<6;i++){ 
     //*(dst_mac+i) = (*ether_address).ether_addr_octet[i]; 
    } 
    printf("%c\n",(*ether_address).ether_addr_octet[0]); 

    return 0; 
} 

eine MAC-Adresse (auf die durch HWaddr) Da möchte ich, dass in meiner dst_mac Variable durch ether_aton konvertieren. Allerdings ist das Array innerhalb der Ergebnisstruktur ether_address leer oder so scheint es. Zum Beispiel gibt mir das printf unten ein leeres Zeichen. Was ist los mit dir?

+3

Drucken Sie die Oktetts als Hexadezimalziffer oder Dezimalziffern aus, um zu sehen, was die Werte sind. hängen Sie nicht davon ab, dass das Oktett ein druckbares Zeichen ist. –

+0

Entfernen Sie die erste Codezeile. Es ist potentiell gefährlich. – Olaf

+0

Hallo Richard Chambers, ich habe die Ergebnisse als Dezimalzahlen ausgedruckt: Ich bekomme 0, 22, 62, 95, 2 und 31 in dem Array der Größe 6. Wie kann ich diese Zahlen interpretieren? –

Antwort

1

Im Grunde konvertiert Ether_aton Ihre MAC-Adresse, die hexadezimale Zeichen durch Doppelpunkte zu Zahlen getrennt hat. In meinem Code versuche ich% c zu drucken, wenn ich% d drucken soll.