我想从命令行获取MAC地址,所以我把它作为字符串...如何将这个17字节的MAC字符串转换为“00:0d:3f:cd:02:5f”到6字节MAC地址在C
答案 0 :(得分:24)
在符合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];
答案 1 :(得分:0)
没有内置函数和错误处理:
unsigned char mac[6];
for( uint idx = 0; idx < sizeof(mac)/sizeof(mac[0]); ++idx )
{
mac[idx] = hex_digit( mac_str[ 3 * idx ] ) << 4;
mac[idx] |= hex_digit( mac_str[ 1 + 3 * idx ] );
}
输入实际上是{* 1}}的3 * 6字节。
\0