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的新手。预先感谢
答案 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)
几件事:
+-------+------------+--------+
| tg | tg_present | tg_int |
+-------+------------+--------+
| 10557 | 1 | 10,557 |
+-------+------------+--------+
。代码:
2 ** 32