标签:bubuko style 字符串 pen 字符 初学 学python 换算 append
1. 将整数转换成IP:
思路:将IP地址转换成无符号32位的二进制,再8位进行分割,每8位转换成十进制即可。
#!usr/bin/python 2 #encoding=utf-8 3 #1. 将整数转换成32位无符号二进制 4 def intToIp(num): 5 s = [] 6 g = [] 7 h = [] 8 for i in range(32): 9 a = num%2 10 s.insert(0,a) 11 num = num/2 12 print s 13 #2. 每8位进行分割,将4个8位二进制转换成十进制,加.连接即可。 14 for i in xrange(0,32,8): 15 g.append(s[i:i+8]) 16 print g 17 for temp in g: 18 sum = 0 19 j = 0 20 for temp2 in temp: 21 sum = sum + temp2*(2**(7-j)) 22 j += 1 23 print sum 24 h.append(str(sum)) 25 return ‘.‘.join(h[::1]) 26 a=intToIp(123456789) 27 print a
2. 将IP地址转换成整数:
思路:将IP的四位分别转换成8位二进制,去"."后整合,再换算成十进制。
#!usr/bin/python 2 #encoding=utf-8 3 #将IP地址转换为数值字符串,如7.91.205.21转换后为“123456789” 4 #1.按.分割,2. 分割后的第一位乘以256**4,第二位乘以256**3,第三位乘以256**2,第四位乘以256,结果相加 5 def IpToInt(num): 6 #1.将IP地址转换成32位的二进制。 7 s = num.split(‘.‘) 8 h = [] 9 g = [] 10 for temp in s: 11 while(temp!=0): 12 temp = int (temp) 13 a = temp % 2 14 h.insert(0,a) 15 temp = temp/2 16 if len(h)!= 8: 17 for i in range(8-len(h)): 18 h.insert(0,0) 19 g.extend(h) 20 h = [] 21 # print g 22 #2. 将二进制换算成整数: 23 sum = 0 24 j = 0 25 for temp2 in g: 26 sum = sum + temp2*(2**(31-j)) 27 j += 1 28 print sum 29 IpToInt("7.91.205.21")
注:初学python,代码有点low,请见谅!
标签:bubuko style 字符串 pen 字符 初学 学python 换算 append
原文地址:https://www.cnblogs.com/pengpp/p/9205296.html