13

コマンドラインからMACアドレスを取得したいので、文字列として取得しました...「00:0d:3f:cd:02:5f」のようなこの17バイトのMAC文字列をCの6バイトのMACアドレスに変換するにはどうすればよいですか?

4

2 に答える 2

25

C99準拠の実装では、これは機能するはずです

unsigned char mac[6];

sscanf(macStr, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);

それ以外の場合は、次のものが必要になります。

unsigned int iMac[6];
unsigned char mac[6];
int i;

sscanf(macStr, "%x:%x:%x:%x:%x:%x", &iMac[0], &iMac[1], &iMac[2], &iMac[3], &iMac[4], &iMac[5]);
for(i=0;i<6;i++)
    mac[i] = (unsigned char)iMac[i];
于 2012-10-07T20:44:08.690 に答える