题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
# 整数与IP地址的转换,用到bin(number, /), int(x, base=10) normal_addr = input() decimal_addr = input() def to_decimal_addr(data): numbers = list(map(int, data.split('.'))) for num in numbers: bin_str = bin(num)[2:] str_len = len(bin_str) tran_str = bin_str if str_len == 8 else '0'*(8 - str_len) + bin_str numbers[numbers.index(num)] = tran_str # print(numbers) result = int("".join(numbers), 2) return result def to_normal_addr(data): int_num = int(data) bin_str = bin(int_num)[2:] str_len = len(bin_str) trans_str = bin_str if str_len % 8 == 0 else '0'*(8 - str_len % 8) + bin_str # print(trans_str) tmp = [] for i in range(len(trans_str) // 8): num = str(int(trans_str[8*i:8*(i+1)], 2)) tmp.append(num) result = ".".join(tmp) return result if __name__ == '__main__': result_1 = to_decimal_addr(normal_addr) print(result_1) result_2 = to_normal_addr(decimal_addr) print(result_2)