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.