#include <stdio.h>
#include <stdlib.h>
unsigned char a2x(const char c)
{
switch(c) {
case '0'...'9':
return (unsigned char)atoi(&c);
case 'a'...'f':
return 0xa + (c-'a');
case 'A'...'F':
return 0xa + (c-'A');
default:
goto error;
}
error:
exit(0);
}
/*convert a string,which length is 18, to a macaddress data type.*/
#define MAC_LEN_IN_BYTE 6
#define COPY_STR2MAC(mac,str) \
do { \
for(int i = 0; i < MAC_LEN_IN_BYTE; i++) {\
mac[i] = (a2x(str[i*3]) << 4) + a2x(str[i*3 + 1]);\
}\
} while(0)
int main(int argc, char **argv)
{
unsigned char macaddr[8] = {0};
char macaddr_str[18] = "8e:b2:cf:89:00:4a";
COPY_STR2MAC(macaddr,macaddr_str);
printf("0x%02x 0x%02x\n",macaddr[0],macaddr[1]);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)