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))