放荡的人生|用Python开发一个交互式网络和IP地址计算器( 二 )
B.知道如何在Python里将十进制的IP地址和子网掩码转换成二进制后 , 我们再来看下如何将二进制的IP地址和子网掩码转换回十进制(代码接续前文):
- 这里只讲一点 , 在Python中我们可以借助int()函数里的2这个参数将数据类型为字符串的二进制数字转换成数据类型为整数的十进制数字 , 举例如下:
- 同样的道理 , 我们可以将二进制形式的子网掩码转换回十进制:
- 这里我们用abs()这个绝对值函数来计算有多少可用的IP地址 , 原因是当子网掩码为/32 (255.255.255.255)时 , no_of_zeros = 0 , 如果不用abs()的话 ,2 ** 0 - 2 结果为负1 , 用abs()则可以将其转换成正1 ,演示如下:
我们知道网络IP和广播IP是两个很重要的概念 , 在给定一个IP地址及其子网掩码后 , 计算该网段的网络IP和广播IP的方法想必大家都知道 , 即将IP地址和子网掩码分别转换成二进制 , 然后将两者对比 , 看子网掩码的二进制有多少个1 , 那么IP地址的二进制就从左至右保留多少位 , 剩下的部分全部以0填充 , 即可得到网络IP的二进制地址 , 如果剩下部分全部以1填充 , 则得到广播IP的二进制地址(这里就不画图演示了 , 这些都是网工最最最基础的知识点 , 不懂的回去把CCENT或CCNA的书重新翻出来读) 。 下面我们在Python中演示如何实现找出一个指定IP所在网段的网络IP和广播IP(代码接前文 , 以前文给定的IP地址192.168.1.1和子网掩码255.255.255.0为例):
- 在使用上面提到的填充0的方法得到了网络IP的二进制地址(11000000101010000000000100000000)后 , 为了将它转换成四个八位组的十进制形式 , 这里我们巧用for循环配合range(0,32,8)来将该网络IP的二进制地址切成四段 , 每段含8个二进制数字 , 作为元素被依次添加进net_ip_octets这个空列表 , 最后使用带参数2的int()函数将它们转换成十进制 , 然后再将这四个十进制数字作为元素依次添加进net_ip_address这个空列表 , 最后配合".".join()将给列表转化为字符串 , 即得到了网络IP:192.168.1.0
推荐阅读
- 下个10年,Go能取代Python成为开发者的首选语言吗?
- 印军|高原边境出大事了!印军一支巡逻队连人带车掉下悬崖,无一人生还
- 三国打一手烂牌,还能登上人生巅峰,贾诩简直就是张绣的“人生导师”
- 薄情娱乐咖|还能登上人生巅峰,贾诩简直就是张绣的“人生导师”,打一手烂牌
- 风味|但顺序对了...这酒很渣
- 品品科技|已成2亿人生活方式,平台化的菜鸟裹裹
- 财经无忌|大起大落的人生太刺激了,中国各省份首富简史
- Buy遍全球1004|每日一葩:人生中第一个差评竟是因为绿色赠品?
- 淘宝人生|淘宝人生:本周除了返场还会更新什么呢?一起猜猜吧!
- 身份证|“上户前被父亲索要6万6”续:24岁女孩拿到人生第一张正式身份证
