python IP转int 和int 转IP
IP地址意义
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
根据这些特性就能解析出ip地址
IP转int
def to_int(ip):
i=0
summ=0
for num in ip.split('.')[::-1]:
summ =summ+ int(num) * 256**i
i += 1
return summ
print to_int("7.91.205.21")
IP转int 一行lambda 解决
to_int = lambda x:'.'.join([str(x/(256**i)%256) for i in range(4)][::-1])
提示 [::-1]是数组元素反转
int 转 IP
def to_ip(num):
s = []
for i in range(4):
s.append(str(num %256))
num /= 256
return '.'.join(s[::-1])
print to_ip(123456789)
int转IP 一行lambda 解决
to_ip = lambda x:sum([256**j*int(i) for j,i in enumerate(x.split('.')[::-1])])
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。Python 2.3. 以上版本可用,2.6 添加 start 参数。
打完收工,喜欢别忘了点个赞。