Background: I am very new to python and am trying to create a sort of subnetting calculator where the user enters a host's IP address and subnet mask and python calculates and returns the network address for that host.
My issue at this point is performing the bitwise operations on each octet, here is the code thus far:
class Address(object):
#o(number) in my code stands for octet, as in octets 1 through 4 of each address
def __init__(self,full,o1,o2,o3,o4):
self.full = full
self.o1 = o1
self.o2 = o2
self.o3 = o3
self.o4 = o4
#this function's purpose is to split the string input into 4 octets for each address object
def iptobinaryoct(data):
octet = 1
o1 = ''
o2 = ''
o3 = ''
o4 = ''
for x in data.full:
if x != ".":
if octet == 1:
data.o1 += x
elif octet == 2:
data.o2 += x
elif octet == 3:
data.o3 += x
elif octet == 4:
data.o4 += x
else:
octet += 1
def nwaddrcalc(ip,snm):
ipo1 = int(ip.o1)
snmo1 = int(snm.o1)
nwaddr.o1 = bin(ipo1) & bin(snmo1)
print ipo1
ip = Address(raw_input("IP: "),'','','','')
snm = Address(raw_input("SNM: "),'','','','')
nwaddr = Address('','','','','')
iptobinaryoct(ip)
iptobinaryoct(snm)
nwaddrcalc(ip,snm)
The issue is that I cannot treat the variables I am performing bitwise operations on as binary type, python interprets them as strings and is therefore unable to perform any calculation on them, is there a way for me to have these variables interpretted as binary within the nwaddrcalc function?
Many thanks, Phil
The bin() function is for converting an integer to a string representation of the binary value, e.g:
output:
In your code,
ipo1
andsnmo1
are already integers, so you can already perform binary operation on them with no conversion,bin()
is not necessary: