题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
import sys
"""
子问题1:四段式IP->10进制整数
step1: IP分成四段,10进制 int(IP[i])-> 2进制形式
step2: 2进制转10进制
子问题2:10进制整数 -> 四段式IP
step1: 10进制整数转2进制
step2: 四个2进制数转为四个10进制数,拼接成ip
注:2进制前两位为'0b'
"""
def ip_2bin_2int(str_ip):
split_ip = str_ip.split(".")
bin_str = ""
for i in range(4):
tmp_str = bin(int(split_ip[i]))[2:]
if len(tmp_str) < 8:
tmp_str = "0" * (8 - len(tmp_str)) + tmp_str
bin_str = bin_str + tmp_str
int_sum = int(bin_str, 2)
return int_sum
def int_2bin_2ip(v_int):
bin_str = bin(v_int)[2:]
if len(bin_str) < 8 * 4:
bin_str = "0" * (8 * 4 - len(bin_str)) + bin_str
int_list = []
for i in range(4):
tmp_str = str(int(bin_str[i * 8 : (i + 1) * 8], 2))
int_list.append(tmp_str)
str_ip = ".".join(int_list)
return str_ip
if __name__ == "__main__":
while True:
try:
str_ip = str(input())
v_int = int(input())
print(ip_2bin_2int(str_ip))
print(int_2bin_2ip(v_int))
except:
break
查看3道真题和解析