码迷,mamicode.com
首页 > 其他好文 > 详细

编写IP格式化输出函数

时间:2014-07-05 19:46:28      阅读:401      评论:0      收藏:0      [点我收藏+]

标签:strong   文件   数据   linux   io   amp   

最近的MDVR界面开发中,其中的一个网络界面要写一个IP地址转换的函数,如将“192.168.1.1”,转换为“192.168.001.001”,以下函数的功能实现IP地址的格式化输出。

static int IPConvert(char *str)
{
      long ipaddr = inet_addr(str);
      return sprintf(str, "%03d.%03d.%03d.%03d", (ipaddr >> 0) & 0xFF, (ipaddr >> 8) & 0xFF, (ipaddr >> 16) & 0xFF, (ipaddr >> 24) & 0xFF);
}

1)inet_addr 函数:

头文件:在linux系统下,可用man inet_addr 查看:

             #include <sys/socket.h>
             #include <netinet/in.h>
             #include <arpa/inet.h>

功能:将一个字符串型的点分十进制的IP转换成一个长整数型数(u_long类型)

2)sprintf 函数:

头文件:#include <stdio.h>

功能:把格式化的数据写入某个字符串。

注:“%03d”表示输出数字宽度为3,不足的左边补0;

     "%03d.%03d.%03d.%03d",从右向左的填充。

输出结果:

        “192.168.1.1”的整数形式为:16885952

        整数16885952转化成字符串IP地址,并格式化输出:192.168.001.001

       整数 ——> IP:

  • 将整数值进行右移位操作(>>),右移0位,再进行与操作符(&)0xFF,得到的数字即为第四段IP。
  • 将整数值进行右移位操作(>>),右移8位,再进行与操作符(&)0xFF,得到的数字即为第三段IP。
  • 将整数值进行右移位操作(>>),右移16位,再进行与操作符(&)0xFF,得到的数字即为第二段IP。
  • 将整数值进行右移位操作(>>),右移24位,与操作符(&)0xFF,得到的数字即为第一段IP。
  • 0xFF是一个十六进制数,二进制表示为11111111.

 

编写IP格式化输出函数,布布扣,bubuko.com

编写IP格式化输出函数

标签:strong   文件   数据   linux   io   amp   

原文地址:http://www.cnblogs.com/haiqin2014/p/3822608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!