题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
while True:
try:
a = input()
a = a.split('.')
if(len(a) == 1):若输入的是需要还原的
b = '{:32b}'.format(int(a[0])) #转化为32位二进制
b = list(b)
for i in range(len(b)): #不知道为啥他前面不会补齐。。手动补齐32位,转化为8位4位就没这种情况
有大佬知道为啥不
if(b[i] == ' '):
b[i] = '0'
b = ''.join(b)
b_1 = '0b' + b[:8] #截取四部分
b_2 = '0b' + b[8:16]
b_3 = '0b' + b[16:24]
b_4 = '0b' + b[24:]
c = []
c.append(str(int(b_1,2))) #分别转为十进制
c.append(str(int(b_2,2)))
c.append(str(int(b_3,2)))
c.append(str(int(b_4,2)))
print('.'.join(c)) #十进制之间用.相连
else: #若为IP地址
e = []
for i in a:
d = int(i)
d = '{:08b}'.format(d) #转化为8位二进制
e.append(d)
d = ''.join(e)
print(int(d,2))最后转化为十进制
except:
break
华为机试题解(prod.by kedao) 文章被收录于专栏
华为实习机试题解