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
网友评论