Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组

http://blog.csdn.net/hbl0307106015/article/details/8818098

#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)  \
int i; \
do { \
for(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 %02x\n",macaddr[0],macaddr[1]);
printf("%02x %02x\n",macaddr[2],macaddr[3]);
printf("%02x %02x\n",macaddr[4],macaddr[5]);

return 0;
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值