任何其他执行python操作的方式

时间:2018-07-10 16:40:11

标签: python

for i in range(0, 2 ** 24):
byte3 = i & 0xff
byte2 = i & 0xff00
byte1 = i & 0xff0000
byte0 = i & 0xff000000
print('%d.%d.%d.%d' % (byte0 >> 24, byte1 >> 16, byte2 >> 8, byte3))

请求编辑程序。我是python的新手。预先感谢

2 个答案:

答案 0 :(得分:1)

如果您真的只是在尝试枚举所有可能的IP地址,那么这比移位是一种更加Python化的方法:

from itertools import product
r = range(256)
addrs = map(lambda x: '.'.join(str(d) for d in x), product(r, repeat=4))

这具有几乎立即生效的优势,因此,如果您想一次获得一个,则不必等待要计算的大量列表。 itertools.product将返回一个生成器,该生成器对r的笛卡尔积进行迭代4次。这将创建类似(0, 0, 0, 0)的元组,因此我们使用map将lambda应用于每个元组,以将整数转换为字符串并以.字符将它们连接起来。

然后,如果要打印它们,可以执行以下操作:

while addrs:
    print(next(addrs))

答案 1 :(得分:0)

几件事:

  1. 缩进不正确(可能是复制和粘贴错误)。
  2. IP中存储了32位信息,因此我将其更改为+-------+------------+--------+ | tg | tg_present | tg_int | +-------+------------+--------+ | 10557 | 1 | 10,557 | +-------+------------+--------+

代码:

2 ** 32