我是靠谱客的博主 超帅长颈鹿,这篇文章主要介绍元进Python(3)---如何实现IP子网掩码计算器功能?,现在分享给大家,希望可以做个参考。

【最终呈现结果】

输入IP地址和掩码,就可以计算出网络段地址、主机地址范围以及广播地址。

【详细代码实现以及注释】

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import re #引入正则表达式模块 IPAddr='162.31.233.69' IPMask='17' #输入IP地址和子网掩码,可以用input,让用户输入 IP10L = re.findall(r'd*', IPAddr) #用正则表达式挑出IP地址的四个十进制数 for x in IP10L:     IP10L.remove('') print('第一步:'+str(IP10L)) #把IP地址转换为四位十进制数的数列 IP2L=[] IP2='' for x in IP10L:     #MyBin=str(bin(int(x))).strip('0b')   #该方法容易误杀后面的0     MyBin = str(bin(int(x)))[2:]     MyZero='0'*(8-len(MyBin))             #前面需要补充0的位数     IP2L.append(str(MyZero)+(bin(int(x)))[2:]) for x in IP2L:     IP2=IP2+str(x) print('第二步:'+str(IP2L)) print('第三步:'+str(IP2)) #把IP地址统一转换成四位二进制形式的数列,最后用空字符串拼接成一个整体 def Masker(mask,NetorHost):     if NetorHost==0:                        #计算网络部分系列         MyNetworkt1=str(IP2[0:mask])+str(str(NetorHost)*(32-int(IPMask)))         print('第四步:' + str(MyNetworkt1))         #根据掩码位数把二进制IP整体主机部分全部置0,用来计算第一主机         FirstIPt1=str(IP2[0:mask])+str(str(NetorHost)*(32-int(IPMask)-1))+str(1)         #二进制第一主机IP         print('第五步:' + str(FirstIPt1))         MyNetwork2=[]         FirstIPt2=[]         i=0         while i<=3:             MyNetwork2.append(int(MyNetworkt1[i*8:(i+1)*8],2))              #把二进制形式网络段MyNetwork1分成四段,且转换为十进制形式。             FirstIPt2.append(int(FirstIPt1[i*8:(i+1)*8],2))               #把二进制形式第一主机分成四段,且转换为十进制形式。             i+=1         MyNetworkt3=str(MyNetwork2)[1:-1].replace(',','.')           #网络段改写成点分式,不是逗号分式。         MyNetwork=MyNetworkt3.replace(' ','')                         #网络段进一步去掉空格         FirstIPt3=str(FirstIPt2)[1:-1].replace(',','.')              #第一主机改写成点分式,不是逗号分式。         FirstIP=FirstIPt3.replace(' ','')                            #第一主机进一步去掉空格         print('第六步:网络地址 ' + str(MyNetwork))         print('第七步:第一主机 ' + str(FirstIP))     else:                                    #计算主机部分系列         MyNetworkt1=str(IP2[0:mask])+str(str(NetorHost)*(32-int(IPMask)))         print('第八步:' + str(MyNetworkt1))                          #广播地址的二进制形式         LastIPt1=str(IP2[0:mask])+str(str(NetorHost)*(32-int(IPMask)-1))+str(0)         #最后一个主机地址的二进制形式         print('第九步:' + str(LastIPt1))         MyNetwork2=[]         LastIPt2=[]         i=0         while i<=3:             MyNetwork2.append(int(MyNetworkt1[i*8:(i+1)*8],2))                #广播地址转换十进制             LastIPt2.append(int(LastIPt1[i*8:(i+1)*8],2))                    #最后一个主机地址转换为十进制             i+=1         MyNetworkt3=str(MyNetwork2)[1:-1].replace(',','.')              #点分式         MyNetwork=MyNetworkt3.replace(' ','')                           #去掉空格         LastIPt3=str(LastIPt2)[1:-1].replace(',','.')         LastIP=LastIPt3.replace(' ','')         print('第十步:最后主机 ' + str(LastIP))         print('十一步:广播地址 ' + str(MyNetwork)) Masker(int(IPMask),0) #网络地址,就是说主机部分等于0 Masker(int(IPMask),1) #主机地址,就是说主机部分不为0

最后

以上就是超帅长颈鹿最近收集整理的关于元进Python(3)---如何实现IP子网掩码计算器功能?的全部内容,更多相关元进Python(3)---如何实现IP子网掩码计算器功能内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部