题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
def ip_to_num(s):
res = ""
nums = s.split(".")
for num in nums:
# 十进制转二进制
bin_unit = bin(int(num))[2:]
N = len(bin_unit)
if N < 8:
bin_unit = "0" * (8-N) + bin_unit
res += bin_unit
return str(int(res, base=2))
def num_to_ip(s):
bin_str = bin(int(s))[2:]
N = len(bin_str)
# 长度不够补0
if N < 32:
bin_str = "0" * (32-N) + bin_str
nums = [bin_str[:8], bin_str[8:16], bin_str[16:24], bin_str[24:]]
dec_nums = []
for num in nums:
dec_nums.append(str(int(num, base=2)))
return ".".join(dec_nums)
if __name__ == "__main__":
while True:
try:
ip = input()
num = input()
print(ip_to_num(ip))
print(num_to_ip(num))
except:
break

科大讯飞公司氛围 469人发布