放荡的人生|用Python开发一个交互式网络和IP地址计算器( 二 )


放荡的人生|用Python开发一个交互式网络和IP地址计算器B.知道如何在Python里将十进制的IP地址和子网掩码转换成二进制后 , 我们再来看下如何将二进制的IP地址和子网掩码转换回十进制(代码接续前文):
放荡的人生|用Python开发一个交互式网络和IP地址计算器

  • 这里只讲一点 , 在Python中我们可以借助int()函数里的2这个参数将数据类型为字符串的二进制数字转换成数据类型为整数的十进制数字 , 举例如下:

放荡的人生|用Python开发一个交互式网络和IP地址计算器
  • 同样的道理 , 我们可以将二进制形式的子网掩码转换回十进制:

放荡的人生|用Python开发一个交互式网络和IP地址计算器C.我们知道要算出一个网段内有多少可用的IP地址需要知道该网段的子网掩码以二进制表达时里面有多少个0 (number of zeros , 在Python中我们将其赋值给变量no_of_zeros) , 然后套用公式2 ** no_of_zeros - 2即可算出 , 比如这里给定的子网掩码255.255.255.0 , 将其转化为二进制为1111111.1111111.11111111.00000000 , 总共8个0 ,那么2**8-2 = 254 , 即为我们要的结果 , 这个运算过程在Python中的计算方式如下(代码接前文):
放荡的人生|用Python开发一个交互式网络和IP地址计算器
  • 这里我们用abs()这个绝对值函数来计算有多少可用的IP地址 , 原因是当子网掩码为/32 (255.255.255.255)时 , no_of_zeros = 0 , 如果不用abs()的话 ,2 ** 0 - 2 结果为负1 , 用abs()则可以将其转换成正1 ,演示如下:

放荡的人生|用Python开发一个交互式网络和IP地址计算器D.
我们知道网络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为例):
放荡的人生|用Python开发一个交互式网络和IP地址计算器