0

我有以下IP地址“192.168.2.65”

有没有办法将最后 2 个八位字节转换为 0。

我找到了以下内容,但它只能让我替换最后一个,我需要替换最后一个 2。

ip = 192.168.2.65
output='.'.join(ip.split('.')[:-1]+["0"])
print(output)

这给了我 192.168.2.0 我想成为 192.168.0.0

4

3 回答 3

4

索引-1是指最后一个索引。如果要更改两个,请将索引更改为-2.

output='.'.join(ip.split('.')[:-2]+["0", "0"])
于 2021-01-15T02:09:20.493 回答
0

取决于您尝试应用的逻辑。如果您只是想修改一个字符串,其他答案是正确的。

但是,如果您要获取地址所在子网的网络地址,则应正确处理地址并使用ipaddress模块。

这将有助于计算正确的网络和广播地址,并允许您检查网络中的包含等。


import ipaddress

interface = IPv4Interface('192.168.2.35/255.255.0.0')

print(interface.network)

#192.168.0.0/16

print(interface.network.network_address)

#192.168.0.0

print(interface.network.broadcast_address)

#192.168.255.255
于 2021-01-15T02:25:17.243 回答
0

您也可以在这里使用基于正则表达式的方法:

ip = "192.168.2.65"
output = re.sub(r'\.\d+\.\d+$', '.0.0', ip)
print(output)   # prints 192.168.0.0
于 2021-01-15T02:11:46.067 回答