python IP 地址和数字之间的转换
2016-01-13 17:58
633 查看
突然间发现,ip地址以某种方式转换为数字竟然可以ping通并且能访问。很好奇这中间到底发什么了什么?
例如将百度的ip “119.75.218.77”转换为数字就是2001459789。我们在cmd下ping一个这个数字发现
竟然真可以Ping通 而且在解析的时候又把这串数字解析为”119.75.218.77”这个ip地址了。
小白开启充电模式一探究竟:
为什么要将IP地址转化为数字地址?
根据TCP/IP协议规定,IP地址是由32位二进制数组成,而且是唯一的。例如某IP地址为:
11010010 01001001 10001100 00000010
很明显,这些数字谁记得住啊,所以为了方便记忆,就将组成计算机的IP地址的32位二进制分成四段,每段8位,中间用小数点隔开,然后将每八位二进制转换成十进制数,这样上述IP地址就变成了:118.123.15.102了,是不是直观很多。
简单的说,数字地址就是IP地址的另一种表现形式。都可以被浏览器,ping命令识别还原和访问。
区别: IP地址用”点分十进制”表示,用’.’分成4部分; 数字地址是一串用”十进制”表示的数字。 0.0有点废话的感觉
作用:主要用于快速查询该IP地址或IP段属于那个城市,从而进行流量统计,根据来访IP显示天气预报,根据IP显示不同的页面等。将IP地址或IP段转换为数字保存在数据库中,可以提高检索速度。要知道,在数据库中数字类型的要比文本类型的检索速度快的多,从而提高网站性能。
这样考虑一下,将IP地址转换为数字非常有必要。
下面再看一下这个转换过程是怎么实现的:
IP—>数字:
例如:”119.75.218.77”,我们要将这个IP转换为数字,首先我们要将”点分十进制”的每一位转换为16进制。
经过我们转换后如下
然后我们将 十六进制774BDA4D 转换为十进制数即是我们想要的数字IP 2001459789 了
这样是否有些麻烦,我们再来看个简单的:
119*256*256*256+75*256*256+218*256+77 =2001459789
数字—>IP:
既然IP可以转换为数字,那么数字也一定可以以某种方式还原为IP了。
程序怎么实现IP地址和数字之间的转换呢?
python很强大
ip—>num:
num—>ip
例如将百度的ip “119.75.218.77”转换为数字就是2001459789。我们在cmd下ping一个这个数字发现
竟然真可以Ping通 而且在解析的时候又把这串数字解析为”119.75.218.77”这个ip地址了。
小白开启充电模式一探究竟:
为什么要将IP地址转化为数字地址?
根据TCP/IP协议规定,IP地址是由32位二进制数组成,而且是唯一的。例如某IP地址为:
11010010 01001001 10001100 00000010
很明显,这些数字谁记得住啊,所以为了方便记忆,就将组成计算机的IP地址的32位二进制分成四段,每段8位,中间用小数点隔开,然后将每八位二进制转换成十进制数,这样上述IP地址就变成了:118.123.15.102了,是不是直观很多。
简单的说,数字地址就是IP地址的另一种表现形式。都可以被浏览器,ping命令识别还原和访问。
区别: IP地址用”点分十进制”表示,用’.’分成4部分; 数字地址是一串用”十进制”表示的数字。 0.0有点废话的感觉
作用:主要用于快速查询该IP地址或IP段属于那个城市,从而进行流量统计,根据来访IP显示天气预报,根据IP显示不同的页面等。将IP地址或IP段转换为数字保存在数据库中,可以提高检索速度。要知道,在数据库中数字类型的要比文本类型的检索速度快的多,从而提高网站性能。
这样考虑一下,将IP地址转换为数字非常有必要。
下面再看一下这个转换过程是怎么实现的:
IP—>数字:
例如:”119.75.218.77”,我们要将这个IP转换为数字,首先我们要将”点分十进制”的每一位转换为16进制。
经过我们转换后如下
119 -----> 77 75 -----> 4B 218 -----> DA 77 -----> 4D
然后我们将 十六进制774BDA4D 转换为十进制数即是我们想要的数字IP 2001459789 了
这样是否有些麻烦,我们再来看个简单的:
119*256*256*256+75*256*256+218*256+77 =2001459789
数字—>IP:
既然IP可以转换为数字,那么数字也一定可以以某种方式还原为IP了。
201459789%256 = 77 (201459789/256)%256 = 218 . .
程序怎么实现IP地址和数字之间的转换呢?
python很强大
ip—>num:
import socket import struct ip = '119.75.218.77' num_ip=socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip)))[0]) '2001459789'
num—>ip
import socket import struct num_ip = 2001459789 ip = socket.inet_ntoa(struct.pack('I',socket.htonl(num_ip))) '119.75.218.77'
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法