子网掩码计算器?
定义:子网掩码计算器是一款能够方便快捷的计算划分子网的工具。该软件可以随意调整掩码位,因此可用来计算不标准的子网。
用户只要在该ip子网掩码计算器中输入点分十进制的IP地址,可以立刻判断出地址类,并显示其子网位、主机位、符合条件的子网数量、每个子网所包含的有效主机数量、所属子网地址、子网掩码、子网的广播地址以及当前子网所包含的主机范围,基本上是你希望得到的数据它都计算出来了。
ip与子网掩码计算?
将ip地址和子网掩码做“与”运算,就可以得到子网地址。示例ip地址为192·168·100·5 子网掩码是255·255·255·0.计算步骤如下:
将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址。 虚线前为网络地址,虚线后为主机地址:192·168·100·5转化为二进制 11000000101010000110010000000101。255·255·255·0转化为二进制 11111111111111111111111100000000。
延伸阅读
脑子笨,口算子网掩码有点慢,于是用python3 写了个子网掩码计算器,可以算IPV4和IPV6,支持192.168.1.1/24和192.168.1.1/255.255.255.0两种掩码方式。
脚本内容如下:
from IPy import IP
import tkinter
def ipmask(strs=''):
try:
ip = IP(strs, make_net=True)
info = {}
info['IP/MASK'] = str(ip)
info['MASK'] = str(IP(ip).strNormal(2).split('/')[1])
info['LENGTH'] = ip.len()
info['START'] = str(ip[0])
info['END'] = str(ip[-1])
ret = info
except:
ip = ''
ret = '格式有误'
return ret, ip
class MY_GUI():
def __init__(self, init_window_name):
self.init_window_name = init_window_name
def set_init_window(self):
self.init_window_name.title("IP子网掩码计算器")
self.init_window_name.geometry('500x610 500 100')
self.init_window_name.attributes("-alpha", 0.95)
self.ip_label = tkinter.Label(self.init_window_name, text="IP/MASK")
self.ip_label.pack(fill=tkinter.X, side=tkinter.TOP)
self.ip_text = tkinter.Entry(self.init_window_name)
self.ip_text.pack(fill=tkinter.X, side=tkinter.TOP, )
self.button = tkinter.Button(self.init_window_name, text="计算", width=13, command=self.trans)
self.button.pack(fill=tkinter.Y, side=tkinter.TOP)
self.result_data_Text = tkinter.Text(self.init_window_name)
self.scroll = tkinter.Scrollbar()
self.scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
self.scroll.config(command=self.result_data_Text.yview())
self.result_data_Text.config(yscrollcommand=self.scroll.set)
self.result_data_Text.pack(fill=tkinter.Y, side=tkinter.TOP, expand='yes')
# 功能函数
def trans(self):
self.result_data_Text.delete(1.0, tkinter.END)
strs = self.ip_text.get()
info, ip = ipmask(strs)
if 'MASK' in info:
self.result_data_Text.insert(tkinter.END,'n')
for i in info:
self.result_data_Text.insert(tkinter.END, '{:<10}{}n'.format(i, info[i]))
self.result_data_Text.insert(tkinter.END, 'n{}nn'.format('=' * 50))
else:
self.result_data_Text.insert(tkinter.END, info)
if ip:
if ip.len() > 65536:
self.result_data_Text.insert(tkinter.END, '列表过大n')
else:
for i in ip:
self.result_data_Text.insert(tkinter.END, str(i) 'n')
def gui_start():
init_window = tkinter.Tk()
ZMJ_PORTAL = MY_GUI(init_window)
ZMJ_PORTAL.set_init_window()
init_window.mainloop()
gui_start()