我有以下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
我有以下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
索引-1是指最后一个索引。如果要更改两个,请将索引更改为-2.
output='.'.join(ip.split('.')[:-2]+["0", "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
您也可以在这里使用基于正则表达式的方法:
ip = "192.168.2.65"
output = re.sub(r'\.\d+\.\d+$', '.0.0', ip)
print(output) # prints 192.168.0.0