Python 计算子网的地址

Python 计算子网的地址,python,Python,计算子网的地址: 命令: 如果将主机地址和网络掩码表示为4个数字的列表,则可以从一个列表中获取第一个数字的按位and,从另一个列表中获取第一个数字的按位and,然后从一个列表中获取第二个数字的按位and,从另一个列表中获取第二个数字的按位and,依此类推。以列表形式返回网络地址 我的代码: def apply_network_mask(host_address, netmask): ips = host_address.split(".") net = net

计算子网的地址:

命令: 如果将主机地址和网络掩码表示为4个数字的列表,则可以从一个列表中获取第一个数字的按位and,从另一个列表中获取第一个数字的按位and,然后从一个列表中获取第二个数字的按位and,从另一个列表中获取第二个数字的按位and,依此类推。以列表形式返回网络地址

我的代码:

def apply_network_mask(host_address, netmask):
    ips = host_address.split(".")
    net = netmask.split(".")

    ips_bin = [format(int(i), '08b') for i in ips]
    net_bin = [format(int(i), '08b') for i in net]

    print(f"{ips_bin & net_bin}")
我的代码:

我需要的是: 应用网络掩码([192168,0191],[255255255,0])我应该返回[192168,0,0]

看看这个例子

from ipaddress import IPv4Address
import re


class MyIPv4(IPv4Address):
    def __and__(self, other: IPv4Address):
        if not isinstance(other, (int, IPv4Address)):
            raise NotImplementedError
        return self.__class__(int(self) & int(other))

    @property
    def binary_repr(self, sep=".") -> str:
        """Represent IPv4 in binary"""
        return sep.join(f"{i:08b}" for i in self.packed)  

    @classmethod
    def from_binary_repr(cls, binary_repr: str):
        """Represent IPv4 ifrom binary to human readable view"""
        i = int(re.sub(r"[^01]", "", binary_repr), 2)  
        return cls(i)


addr = MyIPv4("192.168.0.2")
mask = MyIPv4("255.255.255.0")


print(f'{addr} & {mask} is {addr & mask} network')
print(f'{addr.binary_repr} & {mask.binary_repr} is {(addr & mask).binary_repr} network')

您可以通过读取

导入IP地址 >>>ip地址ip_接口(“192.168.0.161/255.255.255.0”).网络 IPV4网络('192.168.0.0/24') 您可以更进一步,直接从
IPv4Network
with_netmask
属性以字符串形式获取网络地址

>ipaddress.ip_接口(“192.168.0.161/255.255.255.0”).network.with_netmask.split('/'))
['192.168.0.0', '255.255.255.0']
这也适用于IPv6地址

ip地址ip_接口(“2001:0db8:85a3:0000:0000:8a2e:0370:7334/64”)。网络 IPV6网络('2001:db8:85a3::/64')
那么,如果你要以列表的形式返回网络地址,为什么不返回任何内容呢?另外,
ips Bin
不是
ips\u Bin
。是的,我已经更改了它,但仍然需要帮助。你已经编辑掉了导致屏幕截图错误的打字错误。那么你的问题是什么?你的意见是什么?你的实际输出和期望输出是什么?你的问题是什么?不要发布代码的图像。将文本粘贴到问题中。请在从其他源复制代码时提供属性。