题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
def func1(a):
b = 0
c = [0,0,0,0,0,0,0,0]
d = ''
while int(a) >= 2**b:
b = b + 1
b = b - 1
for i in range(8)[::-1]:
if int(a) >= 2**i:
a = int(a)-2**i
c[7-i] = 1
for i in c:
d = d + str(i)
return d
def func2(a):
b = 0
for i in range(len(a)):
if int(a[i]) == 1:
b = b + 2**(len(a)-i-1)
return b
def func3(a):
b = 0
c = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
d = ''
while int(a) >= 2**b:
b = b + 1
b = b - 1
for i in range(32)[::-1]:
if int(a) >= 2**i:
a = int(a)-2**i
c[31-i] = 1
for i in c:
d = d + str(i)
return d
def func4(a):
b = []
c = ''
for i in range(4):
b.append(a[i*8:(i+1)*8])
for i in range(4):
if i < 3:
c = c + str(func2(b[i])) + '.'
else:
c = c + str(func2(b[i]))
return c
while True:
try:
a = input()
aa = input()
b = ''
lis = a.split('.')
for i in lis:
b = b + func1(int(i))
print(func2(b))
print(func4(func3(aa)))
except:
break
查看9道真题和解析