两截各是多少

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

(每道题开头都有同一段: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))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论