Types 对字符串变量执行按位操作

Types 对字符串变量执行按位操作,types,bit-manipulation,operand,Types,Bit Manipulation,Operand,背景:我对python非常陌生,正在尝试创建一种子网计算器,用户在其中输入主机的IP地址和子网掩码,python计算并返回该主机的网络地址 我现在的问题是对每个八位字节执行逐位操作,以下是迄今为止的代码: 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):

背景:我对python非常陌生,正在尝试创建一种子网计算器,用户在其中输入主机的IP地址和子网掩码,python计算并返回该主机的网络地址

我现在的问题是对每个八位字节执行逐位操作,以下是迄今为止的代码:

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)
问题是,我不能将正在执行逐位操作的变量视为二进制类型,python将其解释为字符串,因此无法对其执行任何计算,是否有办法在nwaddrcalc函数中将这些变量解释为二进制

非常感谢,, Phil

该函数用于将整数转换为二进制值的字符串表示形式,例如:

print bin(14)
输出:

0b1110
在您的代码中,
ipo1
snmo1
已经是整数,因此您可以对它们执行二进制操作,而无需进行转换,
bin()

def nwaddrcalc(ip,snm):
ipo1 = int(ip.o1)   
snmo1 = int(snm.o1) 
nwaddr.o1 = ipo1 & snmo1
print ipo1