gpt4 book ai didi

python - 使用python将IP范围划分为1024 block

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:33 25 4
gpt4 key购买 nike

我有一个起始 IP 地址IP 计数。我想将计数分成 1024 个 block 并按以下方式生成一个列表:

示例输入

ip = 90.1.0.0
count = 12000

期望输出(第 1 列表示起始 IP,第 2 列表示计数)

90.1.0.0 1024
90.1.4.0 1024
90.1.8.0 1024
90.1.12.0 1024
90.1.16.0 1024
90.1.20.0 1024
90.1.24.0 1024
90.1.28.0 1024
90.1.32.0 1024
90.1.36.0 1024
90.1.40.0 1024
90.1.44.0 736

简短描述

  • 范围 90.1.0.090.1.4.0 之间将有 1024 个 ip(总计数 = 1024 * 1 = 1024)

  • 范围 90.1.4.090.1.8.0 之间将有 1024 个 ip(总计数 = 1024 * 2 = 2048), 像聪明人一样

  • 范围 90.1.36.090.1.40.0 之间将有 1024 个 ip(总计数 = 1024 * 11 = 11264

  • 由于我们需要计数 12000,因此最后一个 ip 范围将需要 (12000 - 11264 = 736),即 90.1.40.0 到 90.1.44.0

其他样本

输入:

ip = 90.1.0.0
count = 32

输出:

90.1.0.0 32

您能否建议如何进行此操作?我是 Stack Overflow 的新手,所以如果我遗漏了什么,请指导我。

提前致谢!

最佳答案

你可以试试这段代码:

def from_string(s):
"Convert dotted IPv4 address to integer."
return reduce(lambda a,b: a<<8 | b, map(int, s.split(".")))

def to_string(ip):
"Convert 32-bit integer to dotted IPv4 address."
return ".".join(map(lambda n: str(ip>>n & 0xFF), [24,16,8,0]))

ip = '90.1.0.0'
count = 12000
block_size = 1024

ip_int = from_string(ip)
while count > 0:
delta = min(count, block_size)
print to_string(ip_int), delta
ip_int += delta
count -= delta

IP 转换代码取自 here .

关于python - 使用python将IP范围划分为1024 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19082472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com