分类:进制转换
知识点:
-
十进制转8位二进制 format(num, '08b')
-
二进制转十进制 int(binary_str, 2)
-
列表中元素类型转换 new_list = map(int, old_list)
题目来自【牛客】
# 将IP地址转换为十进制形式的整数
def ip_to_int(ip):
# map返回的是迭代器
segments = map(int, ip.split('.')) # 将IP地址字符串以'.'分割,并转换为整数
# <map object at 0x7f0ad1bc8f40>
# print(segments)
# 将每一段转换为8位的二进制串,并拼接起来
binary_str = ''.join(format(seg, '08b') for seg in segments)
# 将二进制串转换为整数
decimal_int = int(binary_str, 2)
return decimal_int
# 将十进制形式的IP地址转换回标准的点分十进制形式
def int_to_ip(decimal):
# 将整数转换为32位的二进制串
binary_str = format(decimal, '032b')
segments = [int(binary_str[i:i+8], 2) for i in range(0, 32, 8)] # 将二进制串每8位分割转换回整数
ip = '.'.join(map(str, segments)) # 用'.'连接每个整数以构造IP地址字符串
return ip
# 输入
ip_addr = input()
# 转换IP地址并输出结果
decimal_ip = ip_to_int(ip_addr)
print(decimal_ip)
decimal_ip_addr = int(input())
ip_addr = int_to_ip(decimal_ip_addr)
print(ip_addr)
by 软件工程小施同学