华为机考入门python3--(33)牛客33-整数与IP地址间的转换

分类:进制转换

知识点:

  1. 十进制转8位二进制 format(num, '08b')

  2. 二进制转十进制 int(binary_str, 2)

  3. 列表中元素类型转换 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 软件工程小施同学

相关推荐
Navigator_Z3 小时前
LeetCode //C - 1089. Duplicate Zeros
c语言·算法·leetcode
爱吃大芒果3 小时前
面向大型鸿蒙原生应用的工程基建:核心路由、全局样式库与状态管理设计图纸
华为·harmonyos
云泽8085 小时前
C++ 可调用对象通关指南:深度解析 Lambda 表达式、function 包装器与 bind 绑定器
开发语言·c++·算法
wlsh156 小时前
Go 迭代器
算法
语戚6 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
轻口味6 小时前
HarmonyOS 6.1.1 全栈实战录 - 91 实战 Call Service Kit 扩展企服来去电智慧
华为·harmonyos·鸿蒙
CS创新实验室7 小时前
从顺序表到动态数组:数据结构的永恒基石与现代语言的优雅封装
数据结构·算法
Black蜡笔小新7 小时前
自动化AI算法训练服务器DLTM训推一体化平台助力农业生产管理实现安全智能化
人工智能·算法·自动化
木斯佳7 小时前
鸿蒙开发入门指南:前端开发者快速理解视频编码概念——输入模式
华为·音视频·harmonyos
8Qi88 小时前
LeetCode 23. 合并 K 个升序链表 —— 小顶堆(PriorityQueue)
数据结构·算法·leetcode·链表·