忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 2654 | 回复: 2

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

论坛徽章:
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. }
复制代码
两种打印形式得到的打印结果都如下图
微信截图_20171208214046.png

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
发表于 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
发表于 2017-12-19 22:28 |显示全部楼层
回复 2# jeppeter

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

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP