pointer auf MAC addr



  • Hallo,

    in meinem C-Programm hab ich einen Pointer, der auf eine MAC-Adresse zeigen soll -

    unsigned int *ptr;
    

    die MAC Addr hab ich bis jetzt als Array abgespeichert

    localMAC [] = {00, OC, 9D, 45, B4 };
    
    ptr = localMAC;
    

    -> zeigt somit auf das erste Element des Arrays.

    Benötigt man stets zwei Pointer um die MAC Addr darzustellen - da ja unsigned int 32Bits und nicht 48Bits darstellt?

    printf("0x%x\n", ptr);
    

    Kann ich über diesen Pointer auch eine andere MAC Addr in das Array reinschreiben? Oder muss ich immer den Umweg über das Array selbst machen?
    Also ptr++ (+ wertzuweisung) und so wollte ich nicht verwenden, sondern in einem Befehl.

    gruß
    derTim



  • nimm doch ein unsigned char [6] array, und dann haste deine 48 bits.
    🙂



  • bis jetzt funktioniert es noch nicht...

    unsigned char localMAC [6] = {'00', '34', 'FE', 'CD', 'B4'};
    
    printf("MAC ADDR: 0x%x\n", ptr);
    

    wobei ich ptr auch unsigned char gewählt habe... und

    ptr = localMAC;
    

    gesetzt habe. Liegt es an dem %x im printf()?

    derTim



  • unsigned char *ptr; 
    	unsigned char localMAC2 [6] = {0x00, 0x34, 0xFE, 0xCD, 0xB4}; 
    
    	ptr = localMAC2;
    
    	printf("MAC ADDR: %02x\n", ptr);
    
    	printf("%02x %02x %02x %02x %02x\n", localMAC2[0],localMAC2[1], localMAC2[2], localMAC2[3], localMAC2[4], localMAC2[5] );
    

    die zweite version über das array funktioniert, aber die version über den pointer zeigt nichts brauchbares an - an was liegt das? muss ich den pointer noch anders casten???

    derTim



  • du kannst über den pointer das array genau so ansprechen, wie du's mit dem array selbst gemacht hast. übrigens stimmt die anzahl der formatkennzeichner in deinem printf nicht. eine mac-adresse besteht immer aus 6 bytes.
    🙂


Anmelden zum Antworten