两截各是多少
(每道题开头都有同一段:to_int 把点分十进制变成 32 位整数,to_str 变回去,mask(前缀长度) 给出掩码的整数——高位连续的 1,低位 0。)
把 192.168.10.77 拆成两截:网络部分(与掩码)和主机部分(与掩码的反):
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
ip = to_int("192.168.10.77")
m = mask(24)
print(to_str(ip & m) + "/" + str(ip & ~m & 0xFFFFFFFF) + "/" + str(32 - 24))
全部评论