从字符串获得MAC地址的方法
2016-07-13 23:56
441 查看
今日有感于编程水平下降,特意练习一下,根据MAC地址字符串,获取MAC地址的2种方法。
#include <stdio.h>
void func1(char *str)
{
unsigned char mac[6] = {0};
sscanf(str, "%2x:%2x:%2x:%2x:%2x:%2x", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);
printf("func:%s output: mac=%02x:%02x:%02x:%02x:%02x:%02x \n", __FUNCTION__, mac[0], mac[1], mac[2],mac[3], mac[4],mac[5]);
return ;
}
int getvalue(char c)
{
if(( c >= '0' ) && ( c <= '9'))
return c - '0';
else if(( c >= 'a' ) && ( c <= 'f'))
return c - 'a' + 10;
else if(( c >= 'A') && ( c <= 'F'))
return c - 'A' + 10;
else
return 0;
}
void func2(char *str)
{
/*0f:e2:11:ab:cd:03*/
int i;
unsigned char low;
unsigned char high;
unsigned char mac[6] = {0};
for(i=0; i<6; i++)
{
high = getvalue(str[i*3]);
low = getvalue(str[i*3 + 1]);
mac[i] = (high<<4)+ low;
}
printf("func:%s output: mac=%02x:%02x:%02x:%02x:%02x:%02x \n", __FUNCTION__, mac[0], mac[1], mac[2],mac[3], mac[4],mac[5]);
}
int main(int argc, char** argv) {
func1(argv[1]);
func2(argv[1]);
return 0;
}
运行结果:可见两种方法得到的结果相同
#include <stdio.h>
void func1(char *str)
{
unsigned char mac[6] = {0};
sscanf(str, "%2x:%2x:%2x:%2x:%2x:%2x", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);
printf("func:%s output: mac=%02x:%02x:%02x:%02x:%02x:%02x \n", __FUNCTION__, mac[0], mac[1], mac[2],mac[3], mac[4],mac[5]);
return ;
}
int getvalue(char c)
{
if(( c >= '0' ) && ( c <= '9'))
return c - '0';
else if(( c >= 'a' ) && ( c <= 'f'))
return c - 'a' + 10;
else if(( c >= 'A') && ( c <= 'F'))
return c - 'A' + 10;
else
return 0;
}
void func2(char *str)
{
/*0f:e2:11:ab:cd:03*/
int i;
unsigned char low;
unsigned char high;
unsigned char mac[6] = {0};
for(i=0; i<6; i++)
{
high = getvalue(str[i*3]);
low = getvalue(str[i*3 + 1]);
mac[i] = (high<<4)+ low;
}
printf("func:%s output: mac=%02x:%02x:%02x:%02x:%02x:%02x \n", __FUNCTION__, mac[0], mac[1], mac[2],mac[3], mac[4],mac[5]);
}
int main(int argc, char** argv) {
func1(argv[1]);
func2(argv[1]);
return 0;
}
运行结果:可见两种方法得到的结果相同
相关文章推荐
- 数据库调优过程(四):提高数据库写入修改方案
- FTP命令
- hdu 5143 NPY and arithmetic progression(思路,枚举)
- eclipse出现Failed to create the part's controls
- 如何修改eclipse的workspace路径
- 调用相册怎么设置剪裁-b
- Android MVP优化
- 7月12日实习报告
- ASP.NET MVC5 网站开发实践
- HDU 1285 确定比赛名次(简单拓扑排序)
- Ansible安装及配置
- C程序存储空间分布 c知识回顾第三天
- Sas应用之总体概率的参数估计
- c++ 数据类型
- MySQL5.7中使用JSON(一)
- Oracle的函数和操作符
- Codeforces Round #321 (Div. 2) B 二分+预处理
- 关于电脑屏幕分辨率太高字太小怎么解决?
- 自动查找函数地址的程序
- java捕获线程异常