免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5109 | 回复: 2
打印 上一主题 下一主题

[C] printf一个字节格式符打印出四字节 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-12-08 23:26 |只看该作者 |倒序浏览
本想利用  ioctl  获取MAC地址,利用printf打印出MAC地址,逐个字节打印,结果第四个字节的数据打印出4字节,如图,这个怎么解释呢

  1. int main()
  2. {
  3.         int sockfd,fd;

  4.     struct ifreq tmp;
  5.     bzero(&tmp,sizeof(tmp));
  6.     struct sockaddr *addr=&tmp.ifr_addr;   

  7.         sockfd = socket(AF_INET,SOCK_DGRAM,0);
  8.         if(sockfd < 0)
  9.                 return 0;

  10.         strcpy(tmp.ifr_name,"ens33");
  11.         fd=ioctl(sockfd,SIOCGIFHWADDR,&tmp);
  12.        
  13.         /*printf("\r\n get sockfd=%d, len:%d %02x:%02x:%02x:%02x:%02x:%02x\r\n",
  14.         sockfd,addr->sa_family,addr->sa_data[0],addr->sa_data[1],addr->sa_data[2],addr->sa_data[3],addr->sa_data[4],addr->sa_data[5]);*/
  15.         printf("\n\r%02x:%02x:%02x:%02x:%02x:%02x\n\r",tmp.ifr_netmask.sa_data[0],tmp.ifr_netmask.sa_data[1],tmp.ifr_netmask.sa_data[2],tmp.ifr_netmask.sa_data[3],
  16.                 tmp.ifr_netmask.sa_data[4],tmp.ifr_netmask.sa_data[5]);
  17.         return 0;
  18. }
复制代码
两种打印形式得到的打印结果都如下图

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
2 [报告]
发表于 2017-12-14 09:18 |只看该作者
  1.     int main()
  2.     {
  3.             int sockfd,fd;

  4.         struct ifreq tmp;
  5.         bzero(&tmp,sizeof(tmp));
  6.         struct sockaddr *addr=&tmp.ifr_addr;   

  7.             sockfd = socket(AF_INET,SOCK_DGRAM,0);
  8.             if(sockfd < 0)
  9.                     return 0;

  10.             strcpy(tmp.ifr_name,"ens33");
  11.             fd=ioctl(sockfd,SIOCGIFHWADDR,&tmp);
  12.            
  13.             /*printf("\r\n get sockfd=%d, len:%d %02x:%02x:%02x:%02x:%02x:%02x\r\n",
  14.             sockfd,addr->sa_family,addr->sa_data[0],addr->sa_data[1],addr->sa_data[2],addr->sa_data[3],addr->sa_data[4],addr->sa_data[5]);*/
  15.             printf("\n\r%02x:%02x:%02x:%02x:%02x:%02x\n\r",
  16.                 (unsigned char)tmp.ifr_netmask.sa_data[0],
  17.                 (unsigned char)tmp.ifr_netmask.sa_data[1],
  18.                 (unsigned char)tmp.ifr_netmask.sa_data[2],
  19.                 (unsigned char)tmp.ifr_netmask.sa_data[3],
  20.                 (unsigned char)tmp.ifr_netmask.sa_data[4],
  21.                 (unsigned char)tmp.ifr_netmask.sa_data[5]);
  22.             return 0;
  23.     }
复制代码
加入(unsigned char)


论坛徽章:
0
3 [报告]
发表于 2017-12-19 22:28 |只看该作者
回复 2# jeppeter

这个怎么解释呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP