华为机考入门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 软件工程小施同学

相关推荐
马剑威(威哥爱编程)31 分钟前
【共创稿事节】HarmonyOS 7 Agent 开发实战 03:Tool Calling 让 AI 查实时订单与库存
华为·harmonyos
总裁余(余登武)1 小时前
K-means算法改进(Python版)
python·算法·kmeans
灯澜忆梦1 小时前
【面向对象编程c++】| 指针与自定义数据类型
开发语言·c++·算法
xxwl5851 小时前
区域赛算法模版第八章---贪心(Greedy)
c++·笔记·学习·算法
CCblandy2 小时前
向量检索 ANN 参数实测:换一种数据分布,recall 掉了 51 个百分点
人工智能·python·算法·自然语言处理·性能优化
CS创新实验室2 小时前
一棵树怎么做到“自平衡还不太费力“?——红黑树的旋转与染色
数据结构·算法·红黑树·408·计算机考研
Logic1012 小时前
C语言/数据结构位运算题解:异或XOR找出被挑选一次的果子编号——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
深圳市快瞳科技有限公司2 小时前
面向端侧部署的多帧宠物身份识别:完整性评分机制与工程约束
人工智能·算法·计算机视觉·端侧ai·宠物识别·宠物ai·宠物身份识别
倔强的石头1063 小时前
把 Typst 搬上开源鸿蒙 PC:一次“干净”的移植记录
华为·开源·harmonyos
悠仁さん4 小时前
非类型模板参数的特化与偏特化
java·数据结构·算法