在C中将字符串MAC地址转换为char[6]

标签 c

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/

相关文章:

c - 位选择算法

c - 在 C 中提取 DER 编码证书的公钥

c - 如何检查C中不同函数的调用顺序

c - 如何注册回调以在 linux 中执行文件更改?

c - 如何用C软件中断正在运行的函数?

c - 在 [C] 中将 `enum` 转换为其他 `enum` 是否有效?

c - 将数组中的文本通过管道传输到新数组中

c - A、B之间的距离

c - 线程 : signal SIGABRT (lldb) and program ended with exit code -1

c++ - 如何在 C 或 C++ 中反转字符串?