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