# 子网掩码地址转长度
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 子网掩码长度和子网掩码地址转换
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 在学习可变长度子网掩码时,必须先熟练掌握二进制与十进制的转化、计算机中数据的单位(字节、位)等知识。 一、什么是可...
- 本文为转载,无意中发现的好文章,特记录下来慢慢研究。 IP地址和子网划分学习笔记相关篇章: 1、IP地址和子网划分...