#include <stdio.h>
#include <string.h>
#include <linux/if_ether.h>
#include <ctype.h>
#include <inttypes.h>
static int str_to_hwaddr(uint8_t *hwaddr, const char *str)
{
char c;
uint8_t used = 0;
uint8_t quarter = 0;
memset(hwaddr, 0, ETH_ALEN);
while(isspace(*str)) ++str;
while('\0' != *str) {
c = *str++;
switch(c) {
default :
if(strchr("-:. ", c)) {
if(used) {
++hwaddr;
used = 0;
}
continue;
}
return -1;
case '0' ... '9':
quarter = c - '0';
break;
case 'a' ... 'f':
quarter = c - 'a' + 10;
break;
case 'A' ... 'F':
quarter = c - 'A' + 10;
break;
}
*hwaddr = ((*hwaddr)<<4) + quarter;
if(used) ++hwaddr;
used = !used;
}
return 0;
}
static int print_hwaddr(con
mac字符串转hwaddr,支持各种格式
最新推荐文章于 2021-05-13 04:14:20 发布
该博客介绍了一个C语言函数,用于将不同格式的字符串转换为MAC地址。函数`str_to_hwaddr`解析包含破折号、冒号、点或空格分隔的十六进制数,并将它们转化为6字节的硬件地址。博客通过示例展示了如何处理各种输入,如`0.1-0:203040506`、`010...20304050*67`等。
摘要由CSDN通过智能技术生成