题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
def to_ten(ip: str):
ip_l = ip.split(".") # 按照'.'分隔ip
ans_2 = ""
for i in ip_l:
i_2 = str(bin(int(i)))[2::].zfill(8) # 转换成二进制数字符串,去掉前缀0b,并补0到8位
ans_2 += i_2
ans = int(ans_2, 2) # 二进制字符转换成十进制数
return ans
def to_ip(ip_10: str) -> str:
ip_2 = str(bin(int(ip_10)))[2::] # 转换成二进制数并去掉前缀0b
# 根据余数判断是否需要补0
a = len(ip_2) % 8
if a != 0:
ip_2 = '0'* (8-a) + ip_2
ip_l = []
start = 0
l = len(ip_2)
for i in range(l // 8): # 每八位转换成十进制一次,并添加到列表中
s = ip_2[i*8: i*8+8]
ip_l.append(str(int(s, 2)))
ans = '.'.join(ip_l) # 以'.'连接成ip地址
return ans
print(to_ten(input()))
print(to_ip(input()))


