char mac[] = "00:13:a9:1f:b0:88";
int a[6];
sscanf(mac, "%x:%x:%x:%x:%x:%x", &a[0], &a[1], &a[2], &a[3], &a[4],
&a[5]);
总的来说,它有效。但是当 mac 包含类似“0(x)”的内容时,它就会中断
例如
char mac[] = "01:13:a9:1f:b0:88"; // 01 became 00 in above code
有什么技巧吗?
<小时/>这是由于程序其他部分引起的内存问题
**留在这里寻找灵感**
最佳答案
sscanf 知道忽略前导零。
我已经在 Windows 上使用 Visual Studio 尝试过你的代码,在 Linux 上使用 gcc 尝试过,效果很好。我建议您再次检查结果,因为您的程序似乎运行良好。
如果您希望“a”数组的打印方式与输入相同,请使用带有 %02x 修饰符的 printf
关于在C中将字符串MAC地址转换为char[6],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606317/