您的位置:首页 > 编程语言 > Python开发

python整数与IP地址转换 [转]

2014-04-09 20:02 204 查看
我们有时会将一个整数与IP地址进行互换,用python代码实现很简单

将一个整数如2000000,变为一个IP地址的方式

>>> import socket

>>> import struct

>>> int_ip = 123456789

>>> ip = socket.inet_ntoa(struct.pack('I',socket.htonl(int_ip)))      #int to ip address

'7.91.205.21'

>>> socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip)))[0])     #ip address to int

123456789L

其实这是进制数的转换,我们可以自己写代码

# 整数to IP地址格式

>>> def ch1(num):

             s = []

             for i in range(4):

                  s.append(str(num %256))

                  num /= 256

        return '.'.join(s[::-1])
>>> ch1(123456789)
'7.91.205.21'

用lambda的方式,整数toIP 地址 一行代码搞定

>>> ch2 = lambda x: '.'.join([str(x/(256**i)%256) for i in range(3,-1,-1)])                   #除以256取余,逆序输出 相当于转成256进制 

>>> ch2(123456789)

'7.91.205.21'

用lambda的方式,IP地址转换到整数

>>> ch3 = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])])           #相当于由256进制转成10进制

>>> ch3('7.91.205.21')

123456789
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: