美文网首页
python 子网掩码长度和子网掩码地址转换

python 子网掩码长度和子网掩码地址转换

作者: 新月爱文宇 | 来源:发表于2020-11-23 09:26 被阅读0次
# 子网掩码地址转长度
def netmask_to_bit_length(netmask):
    """
    >>> netmask_to_bit_length('255.255.255.0')
    24
    >>>
    """
    # 分割字符串格式的子网掩码为四段列表
    # 计算二进制字符串中 '1' 的个数
    # 转换各段子网掩码为二进制, 计算十进制
    return sum([bin(int(i)).count('1') for i in netmask.split('.')])

# 子网掩码长度转地址
def bit_length_to_netmask(mask_int):
    """
    >>> bit_length_to_netmask(24)
    '255.255.255.0'
    >>>
    """
    bin_array = ["1"] * mask_int + ["0"] * (32 - mask_int)
    tmpmask = [''.join(bin_array[i * 8:i * 8 + 8]) for i in range(4)]
    tmpmask = [str(int(netmask, 2)) for netmask in tmpmask]
    return '.'.join(tmpmask)



if __name__ == '__main__':
    print netmask_to_bit_length('255.255.255.0')
    print bit_length_to_netmask(23)

相关文章

网友评论

      本文标题:python 子网掩码长度和子网掩码地址转换

      本文链接:https://www.haomeiwen.com/subject/qrjmiktx.html