题解 | #整数与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