编写IP格式化输出函数
2014-07-03 16:09
337 查看
最近的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.
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.
相关文章推荐
- 初学Python之利用map编写姓名格式化输出函数
- 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串
- sprintf() 格式化输出函数(图形)
- 编写程序:从键盘上输入若干个整数(以输入-1作为结束标识),输出这些数中的最大值和最小值,要求编写一个函数实现最大值和最小值的求取。
- (14)Linux_C_格式化输人输出函数
- VBScript 格式化输出函数
- gcc中格式化输出函数的研究
- 编程:编写一个截取字符串的函数,(网上流传的答案有的是错的)输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4
- C语言中printf格式化输出函数
- 格式化输出函数: Format
- 关于printf系列格式化输出函数,%S格式的分析
- 格式化输出函数(1): Format
- 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串
- gcc中格式化输出函数-学习笔记
- 【转】C++标准库中用来计算时间差的函数 C++标准库用来格式化输出时间字符串
- 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
- ip分组输出函数ip_output()小结
- 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”
- ASP格式化日期的函数(输出13种样式)
- sprintf() 格式化输出函数