📜  资质| Wipro模拟测试|第31章(1)

📅  最后修改于: 2023-12-03 14:57:48.127000             🧑  作者: Mango

资质 | Wipro模拟测试 | 第31章

概述

Wipro是全球领先的信息技术、咨询和业务流程服务公司,在全球拥有超过175,000名员工,为客户提供业务。本模拟测试是Wipro公司的考核之一,根据第31章的要求编写相应的程序。

题目描述

编写一个函数,用来实现一个算法。该算法将接收两个整数作为输入,分别表示两个IP地址(格式为字符串)的IPv4表示形式,函数需要计算并返回这两个IP地址之间的不同的IP数量(包括头尾两个地址)。

函数签名
def ips_between(start: str, end: str) -> int:
    pass
输入
  • start: 字符串型表示的合法IPv4地址,表示区间起始地址,格式如"10.0.0.0"
  • end: 字符串型表示的合法IPv4地址,表示区间结尾地址,格式如"10.0.0.50"
输出
  • 返回整数型,表示在给定的两个IP地址之间,不同的IP地址数量(包括起始和结束地址)。
样例
assert ips_between("10.0.0.0", "10.0.0.50") == 51
assert ips_between("10.0.0.0", "10.0.1.0") == 256
代码实现
def ips_between(start: str, end: str) -> int:
    # 将IPv4地址转换为整数
    start_ip = sum(map(lambda x: int(x) << (8 * (3 - idx)), start.split(".")))
    end_ip = sum(map(lambda x: int(x) << (8 * (3 - idx)), end.split(".")))
    # 计算两个地址之间的差值
    return end_ip - start_ip + 1