Ich versuche, Broadcast-Adresse durch logische ODER und nicht mit angegebenen IP und Maske zu berechnen, aber die Funktion zurück mich etw seltsam. Warum?Berechnen Broadcast von IP und Maske
IP = '192.168.32.16'
MASK = '255.255.0.0'
def get_ID(ip, mask):
ip = ip.split('.')
mask = mask.split('.')
ip = [int(bin(int(octet)), 2) for octet in ip]
mask = [int(bin(int(octet)), 2) for octet in mask]
subnet = [str(int(bin(ioctet & moctet), 2)) for ioctet, moctet in zip(ip, mask)]
host = [str(int(bin(ioctet & ~moctet), 2)) for ioctet, moctet in zip(ip, mask)]
broadcast = [str(int(bin(ioctet | ~moctet), 2)) for ioctet, moctet in zip(ip, mask)] # a mistake, i guess
print('Subnet: {0}'.format('.'.join(subnet)))
print('Host: {0}'.format('.'.join(host)))
print('Broadcast address: {0}'.format('.'.join(broadcast)))
Warum Sie Ihr Problem Schritt nicht für Schritt lösen und dann optimieren. Donald Knuth zitiert: "Vorzeitige Optimierung ist die Wurzel allen Übels in der Programmierung". Ich kann deinen Code nicht lesen. Meine Augen tun weh. –
Warum tun Sie 'int (bin (int (Oktett)), 2)'? Das ist das gleiche wie 'int (Oktett)'. – Barmar
Erfinden Sie das Rad nicht neu. Benutze die lib! https://docs.python.org/3/library/ipaddress.html#ipaddress.IPv4Network.broadcast_address –