练习题-如何将IP地址转换成为一个整数以及十进制及其他进制之间的转化
1、XX转化为10进制int(x,2)-bin,oct,hex
""" 9、通过代码实现如下转换: 二进制转换成十进制:v = “0b1111011” 十进制转换成二进制:v = 18 八进制转换成十进制:v = “011” 十进制转换成八进制:v = 30 十六进制转换成十进制:v = “0x12” 十进制转换成十六进制:v = 87 """ a = int("0b1111011", 2) b = bin(18) # 八进制转换成十进制:v = “011” # 十进制转换成八进制:v = 30 c = int("011", 8) d = oct(30) # 十六进制转换成十进制:v = “0x12” # 十进制转换成十六进制:v = 87 e = int("0x12", 16) f = hex(87)
2、如何将IP地址转换成为一个整数
请编写一个函数实现将IP地址转换成一个整数。 如 10.3.9.12 转换规则为: ---分割 split 10 00001010 3 00000011 9 00001001 12 00001100 -- 位移或者补齐 str.rjust(width[, fillchar])
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ? -- int 将2进制转为十进制 int(x,2)
""" 10、请编写一个函数实现将IP地址转换成一个整数。 如 10.3.9.12 转换规则为: 10 00001010 3 00000011 9 00001001 12 00001100 再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ? """ # rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。 # str.rjust(width[, fillchar]) # width -- 指定填充指定字符后中字符串的总长度. # fillchar -- 填充的字符,默认为空格 # 语法 def ipfunc(ip): a = ip.split('.') s = '' l = [] for i in a: i = bin(int(i))[2:] i = i.rjust(8, '0') l.append(i) s = s.join(l) return s # 通过位移的方式 def v1(addr): # 取每个数 id = [int(x) for x in addr.split(".")] print(id) sum = 0 for i in range(4): c = (id[i] << [24, 16, 8, 0][i]) sum += c # return sum(id[i] << [24, 16, 8, 0][i] for i in range(4)) return sum if __name__ == '__main__': c = v1("10.21.21.21") d = ipfunc("10.21.21.21") print(c) print(int(d, 2))