免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 12048 | 回复: 3

[C] 如何实现mac地址转换为48位,如何实现整数转为二进制。 [复制链接]

论坛徽章:
0
发表于 2011-09-24 16:37 |显示全部楼层
转换前的原型:MAC地址:00:25:90:0D:F7:09      整数102400
存储的数据结构为:struct data{
                                     unsigned char mac[6];
                                     unsigned char cap[3];
                          }
两个函数可以分开写,该如何实现呢,我研究一天了没找到好方法,大家帮帮忙吧!

论坛徽章:
0
发表于 2011-09-24 18:44 |显示全部楼层
本帖最后由 x5miao 于 2011-09-24 18:57 编辑

不懂你标题里面整数转为二进制是什么意思——在计算机里面所有的东西都是二进制的,不过从你后面给出的结构体我猜测你的意思是这样:
  1. const char  mac[]="00:25:90:0D:F7:09";
  2. const int  cap=102400;
复制代码
......
  1. struct data * convert_mac_int(const char mac[static 17],const int cap,stuct data *ptrto_mac_int)
  2. {
  3.     for(int i=0;i<6;i++)
  4.     {
  5.         if(sscanf(mac+3*i,"%2hhX%*[:]",&ptrto_mac_int->mac[i])!=1)
  6.         {
  7.               fprintf(stderr,"不能转换mac,i=%d\n",i);
  8.               return NULL;
  9.         }
  10.     }
  11.     ptrto_mac_int->cap[0]=(cap>>16) & 0xff;
  12.     ptrto_mac_int.cap[1]=(cap>>8) & 0xff;
  13.     ptrto_mac_int.cap[2]=cap & 0xff;
  14.     return ptrto_mac_int;
  15. }

复制代码

论坛徽章:
0
发表于 2011-09-25 10:20 |显示全部楼层
嗯,就是这个意思!!多谢。我跑下试试

论坛徽章:
0
发表于 2011-09-25 11:27 |显示全部楼层
回复 3# 2004123201


    我的代码是按照C99的规范写的,你注意一下你的编译器支不支持C99(VC和VS都是不支持的)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP