与一下就知道在哪个网
(每道题开头都有同一段:to_int 把点分十进制变成 32 位整数,to_str 变回去,mask(前缀长度) 给出掩码的整数——高位连续的 1,低位 0。)
贯穿的网:办公室 192.168.10.0/24——本机 .5、打印机 .77、网关 .1;隔壁 192.168.11.0/24 里有 .5;机房 10.0.0.0/8。
本机和打印机各与掩码做「与」,看两个网络地址:
def to_int(ip):
a, b, c, d = [int(x) for x in ip.split(".")]
return (a << 24) | (b << 16) | (c << 8) | d
def to_str(n):
return ".".join(str((n >> s) & 255) for s in (24, 16, 8, 0))
def mask(prefix):
return (0xFFFFFFFF << (32 - prefix)) & 0xFFFFFFFF
m = mask(24)
print(to_str(to_int("192.168.10.5") & m) + "/" + to_str(to_int("192.168.10.77") & m) + "/" + to_str(m))
全部评论