java子网掩码转成数字_算法与设计模式系列2之实现子网掩码的从数字到常用格式的转换...

本文介绍了如何将数字形式的子网掩码转换为255.x.x.x的常见格式,提供了一个用Java编写的算法,并展示了等效的Go版本代码。通过举例展示了从0到32的掩码数字对应的转换结果。
摘要由CSDN通过智能技术生成

preface

因为linux系统信息采集的需要,需要把数字类型的掩码转换为255.255.0.0这样的格式,尽管python官网提供了IPy这样的模块可以处理这样的事情,,但是本人懒得安装了,所以自己写了 一个算法来做,有兴趣的同学可以参考下。目前还未测试出bug,如果有问题请随时联系本人邮箱18500777133@sina.cn

Python版本

def calc_netmask(netmask):

'''

计算子网掩码,由数字类型转为xx.xxx.xx.xx

算法是这样的: 得到的数字先除以8,得到的商就是有多少个255,余数就需要再计算,余数等于1,那么最后一位子网眼码就是2**(8-1),8是一段子网眼码长度,

为8个1,1111111,二进制计算。最后一段眼码计算方式如下:

余数为1,即2**7,

余数为2,即2**7+2**6

余数为3,即2**7+2**6+2**5

依次类推

:param netmask:

:return:

'''

if isinstance(netmask,int):

factor,remainder =netmask.__divmod__(8)

mi = 8 - remainder # 计算这个数字的幂

last_mask = 0

while mi <= 7: # 判断掩码长度是否超过了7,超过了长度跳出循

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值