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