Skip to main content
1 of 4

Simple IP subnet calculator

Hello everyone

In this task I had to create simple IP / subnet calculator in Python. I'm just wondering how you see this problem.

There is my code:

def toBinary(integer):
    binary = ['{0:0>8}'.format(bin(int(x))[2:]) for x in integer.split(".")]
    return binary

def ip_information(ip, mask):
    binary_ip = toBinary(ip)
    binary_mask = toBinary(mask)
    network_ip = ["", "", "", ""]
    broadcast_address = ["", "", "", ""]
    number_of_hosts = 1

    for x in range(4):
        for y in range(8):
            network_ip[x] += str(int(int(binary_ip[x][y]) and int(binary_mask[x][y])))
            broadcast_address[x] += str(int(not int(binary_mask[x][y])))
            if binary_mask[x][y] == '0':
                number_of_hosts *= 2
                
        network_ip[x] = int(network_ip[x], 2)
        broadcast_address[x] = int(broadcast_address[x], 2) + network_ip[x]
    
    return f"""
    Network IP: {".".join(str(x) for x in network_ip)}
    Broadcast address: {".".join(str(x) for x in broadcast_address)}
    Number of hosts: {number_of_hosts - 2}
    """

Output:

    Network IP: 192.168.0.0
    Broadcast address: 192.168.0.255
    Number of hosts: 254

Any tips how to make this better, closer to a advanced (but still, can take under account to make it simple) or just better solution will be definitely on point. Thanks in advance!

using Python 3.10

Enjoy your coffee, and your wednesday!