题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
http://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
考察进制之间的转换
- bin():十进制转二进制
- int():n进制转十进制
- hex():十进制转十六进制
while True:
try:
# 输入IP地址
strIP = input()
# 输入10进制IP地址
decIP = input()
# 构造完整二进制形式
lst = strIP.split('.')
res = []
for i in lst:
# 低位
binLow = bin(int(i))[2:]
binHigh = ''
# 高位补齐
for j in range(8-len(binLow)):
binHigh += '0'
res.append(binHigh+binLow)
# 二进制转十进制
decimal = int(''.join(res),2)
print(decimal)
# 十进制转二进制
binIP = bin(int(decIP))[2:]
binHigh = ''
# 构造完整二进制长度
for i in range(32-len(binIP)):
binHigh += '0'
binIP = binHigh + binIP
# 构造IP标准形式
res = []
for i in range(4):
res.append(str(int(binIP[i*8:i*8+8],2)))
IP = '.'.join(res)
print(IP)
except:
break