【发布时间】:2020-07-14 13:35:46
【问题描述】:
我有一个 IPv4 地址列表,它们都在同一个网络上。我想根据 IP 列表计算该网络的网络掩码。
列表:
192.168.2.2
192.168.2.3
192.168.2.4
生成的网络掩码:255.255.255.0
当前算法:如果八位字节不同,则在该网络掩码位置放置 0,否则放置 255。
prev_ip = None
current_netmask = [255,255,255,255]
for ip in ip_list:
if prev_ip != None:
for i in range(0,4):
if ip.split('.')[i] != prev_ip.split('.')[i]:
current_netmask[i] = 0
prev_ip = ip
我的问题是这个网络掩码并不总是正确的,而且我知道其他网络掩码是可能的(除了由 0 和 255 组成的网络掩码)
【问题讨论】:
-
这不是这三个地址的最长掩码。正确答案是
255.255.255.248。试图在文本中操纵 IP 地址是愚蠢的游戏。 IPv4 地址是 32 位无符号整数,您需要计算一下。 this two-part answer 中有一个部分解释了如何做到这一点。
标签: python math networking