int mac_str_to_bin( char *str, unsigned char *mac)
{
int i;
char *s, *e;
if ((mac == NULL) || (str == NULL))
{
return -1;
}
s = (char *) str;
for (i = 0; i < 6; ++i)
{
mac[i] = s ? strtoul (s, &e, 16) : 0;
if (s)
s = (*e) ? e + 1 : e;
}
return 0;
{
int i;
char *s, *e;
if ((mac == NULL) || (str == NULL))
{
return -1;
}
s = (char *) str;
for (i = 0; i < 6; ++i)
{
mac[i] = s ? strtoul (s, &e, 16) : 0;
if (s)
s = (*e) ? e + 1 : e;
}
return 0;
}
测试程序如下:
int main(void)
{
char *p = "11:22:33:44:55:66";
unsigned char dst[6];
mac_str_to_bin(p,dst);
printf("mac:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
dst[0], dst[1], dst[2], dst[3], dst[4], dst[5]);
return 0;
}
打印结果为:mac:11:22:33:44:55:66
本文介绍了一个将MAC地址从字符串形式转换为二进制形式的C语言函数mac_str_to_bin,并通过一个示例程序展示了如何使用该函数。mac_str_to_bin函数接受一个包含十六进制数字和冒号分隔符的字符串输入,并返回一个对应的二进制数组。
169

被折叠的 条评论
为什么被折叠?



