You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将CIDR格式网络地址转换为子网掩码格式?

CIDR转子网掩码Python实现方案

方案1:使用标准库ipaddress实现(推荐)

Python 3.3及以上版本自带ipaddress模块,无需额外安装第三方依赖,直接调用即可完成转换:

import ipaddress

# 你的原始CIDR列表
networks = ['10.202.224.0/24', '10.4.40.0/23', '10.3.41.0/24', '10.4.42.0/21']
result = []

for cidr in networks:
    # strict=False表示忽略CIDR中主机位非0的异常,可根据实际需求调整
    net_obj = ipaddress.IPv4Network(cidr, strict=False)
    result.append(f"{net_obj.network_address}/{net_obj.netmask}")

print(result)

运行后输出和你要求的格式完全一致:

['10.202.224.0/255.255.255.0', '10.4.40.0/255.255.254.0', '10.3.41.0/255.255.255.0', '10.4.42.0/255.255.248.0']

方案2:手动计算实现(无依赖)

如果你不想依赖内置模块,可以直接通过位运算手动计算子网掩码:

def cidr_convert(cidr_str):
    ip_part, prefix = cidr_str.split('/')
    prefix = int(prefix)
    # 生成32位掩码整数
    mask_int = (0xFFFFFFFF << (32 - prefix)) & 0xFFFFFFFF
    # 转换为点分十进制格式
    netmask = f"{(mask_int >> 24) & 0xFF}.{(mask_int >> 16) & 0xFF}.{(mask_int >> 8) & 0xFF}.{mask_int & 0xFF}"
    return f"{ip_part}/{netmask}"

networks = ['10.202.224.0/24', '10.4.40.0/23', '10.3.41.0/24', '10.4.42.0/21']
result = [cidr_convert(item) for item in networks]
print(result)

输出结果和方案1完全相同。

内容的提问来源于stack exchange,提问作者Ghost rider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:45:03