题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import sys
def iptoint(str):
# 1. ip to int
# ip切分
l_bin_ip = []
l_ip = str.split('.')
# 把每段变成二进制
for item in l_ip:
tmp = bin(int(item))[2:]
l_bin_ip.append('0'*(8-len(tmp))+tmp)
# 拼接二进制
bin_ip = ''.join(l_bin_ip)
# print('{}->{}->{}'.format(l_ip, l_bin_ip, bin_ip))
# 二进制转十进制
return int(bin_ip, base=2)
def inttoip(num):
l_int_num = []
# 2. int to ip
# 转二进制
bin_num = bin(num)
bin_num = bin_num[2:]
less = 32 - len(bin_num)
bin_num = '0'*less + bin_num
# 切分成四分
for i in range(4):
# 变成整数
tmp = int(bin_num[i*8:(i+1)*8],base=2)
l_int_num.append('{}'.format(tmp))
# 用.拼接
return '.'.join(l_int_num)
if __name__ == '__main__':
str = sys.stdin.readline().strip()
num = int(sys.stdin.readline().strip())
print(iptoint(str))
print(inttoip(num))
查看9道真题和解析