方法1:
- IP地址转换为整数:IP地址每段可以堪称是8位无符号整数即0~255,把每段拆分成一个二进制形式,组合起来,然后把这个二进制数变啊层一个无符号32位整数。
- 整数转换为IP地址:把这个整数转换成一个无符号32位二进制数。从左到右,每八位进行一下分割,得到4段8位的二进制数,把这些二进制数转换成整数然后加上“.”就可以了。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<cassert>
using namespace std;
int *dec2bin(int decnum)
{
}
int ipToInt(char *ipString)
{
}
int main(void)
{
}
方法2:C++中IP地址的转换及判断(转自:http://blog.chinaunix.net/uid-439869-id-2403088.html)
1)IP地址,是由网络地址的部分加上主机地址的部分组成的。例如:
2)在C++中,要把一个IP地址的字符串转换成一个可以直接用来做“与”运算的数字,可以用这个函数。
inet_addr()将网络地址转换成二进制的数字
相关函数 inet_aton, inet_ntoa
表头文件
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
定义函数 unsigned long int inet_addr(const char *cp);
函数说明 inet_addr()用来将参数cp所指的网络地址字符串转换成网络所使用的二进制数字。网络地址字符串是以数字和点组成的字符串。
返回值:成功则返回对应的网络二进制的数字。失败返回-1.
3)C++中,反过来,如果要把一个这种运算完成的二进制数字直接生成一个IP地址的字符串的话,可以用下面这个函数。
inet_ntoa()将网络二进制的数字转换成网络地址
相关函数 inet_addr,inet_aton
表头文件
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
定义函数 char * inet_ntoa(struct in_addr_in);
函数说明 inet_ntoa()用来将参数in所指的网络二进制数字转换成网络地址,然后将指向此网络地址字符串的指针返回。
返回值:成功则返回字符串指针,失败则返回NULL。
结构in_addr定义如下
struct in_addr
{
unsigned long int s_addr;
}
4)代码例子:
5)说明:
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
转载处链接:
http://blog.sina.com.cn/s/blog_7124c26901014ncv.html