How to convert Mac string to a Byte address in C

前端 未结 2 1848
没有蜡笔的小新
没有蜡笔的小新 2020-12-17 16:52

I want to take MAC address from command line, so I got it as string...how do I can convert this 17 byte MAC string like \"00:0d:3f:cd:02:5f\" to 6 byte MAC Address in C

2条回答
  •  情深已故
    2020-12-17 17:23

    On a C99-conformant implementation, this should work

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

    Otherwise, you'll need:

    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];
    

提交回复
热议问题