![]() |
MAC Adresse umwandeln
Ich habe die MAC Adresse in einer PULONG Variablen vorliegen. Wie bekomme ich die jetzt in eine lesbare Form?
Das Beipiel im SDK macht es so:
Code:
Aber leider reichen meine C-Kenntnisse nicht, um den Code nach Delphi zu übersetzen.
hr = SendARP (ipAddr, 0, pulMac, &ulLen);
printf ("Return %08x, length %8d\n", hr, ulLen); size_t i, j; char * szMac = new char[ulLen*3]; PBYTE pbHexMac = (PBYTE) pulMac; // // Convert the binary MAC address into human-readable // for (i = 0, j = 0; i < ulLen - 1; ++i) { j += sprintf (szMac + j, "%02X:", pbHexMac[i]); } sprintf (szMac + j, "%02X", pbHexMac[i]); printf ("MAC address %s\n", szMac); |
Re: MAC Adresse umwandeln
sprintf() sollte man durch Format() ersetzen können
|
Re: MAC Adresse umwandeln
Das ist nicht das Problem. Das Problem ist die Schleife an sich und was davor und danach kommt.
|
Re: MAC Adresse umwandeln
|
Re: MAC Adresse umwandeln
Hmpf, und ich dachte, ich mache mal was neues. :evil: Danke für den Link.
|
Re: MAC Adresse umwandeln
Immernoch auf Kriegsfuß mit C/C++, Luckie?
Hier wird ein kleiner Trick benutzt, den du erst ab Tiburon auch in Delphi so benutzen kannst. Habe das lang und breit ![]() Unter Delphi kannst du bisher im Prinzip nur PChar oder PAnsiChar zu diesem Zweck benutzen. PBYTE geht leider noch immer nicht. Was passiert ist, daß in der Zeile:
Code:
der Pointer auf den ULONG in einen Pointer auf ein BYTE umgewandelt wird. Da BYTE und CHAR prinzipiell das gleiche sind (auf CPU-Ebene unter IA-32 und x64), und man in C/C++ einen Pointer auch als Array betrachten kann, geht die FOR-Schleife durch das Array und formatiert jeweils das Byte am Index i.
PBYTE pbHexMac = (PBYTE) pulMac;
|
Re: MAC Adresse umwandeln
Das war das eine und das andere war die Schleife, in deren Kopf zwei Variablen deklariert werden, nämlich i und j. Das kannte ich auch noch nicht.
|
Re: MAC Adresse umwandeln
Zitat:
Code:
... oder eben eine Variation davon.
// ...
PBYTE pbHexMac = (PBYTE) pulMac; // // Convert the binary MAC address into human-readable // for (i = 0, j = 0; i < ulLen - 1; ++i, ++pbHexMac) { j += sprintf (szMac + j, "%02X:", *pbHexMac); } // ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz