【发布时间】:2018-04-29 05:32:51
【问题描述】:
我正在尝试通过逻辑 OR 而不是使用指定的 ip 和掩码来计算广播地址,但函数返回给我一些奇怪的东西。为什么?
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)))
【问题讨论】:
-
你为什么要
int(bin(int(octet)), 2)?这与int(octet)相同。 -
不要重新发明轮子。使用库! docs.python.org/3/library/…
标签: python ip-address broadcast