在Python中,如果我想以IP v6地址的形式生成随机字符串,该怎么办?
例如:“ff80 :: 220:16ff:fec9:1”,“fe80 :: 232:50ff:fec0:5”,“fe20 :: 150:560f:fec4:3”等等。
有人可以给我一些帮助吗?
答案 0 :(得分:3)
单线解决方案:
str(ipaddress.IPv6Address(random.randint(0, 2**128-1)))
或手工制作的地址(但是零的连续部分不会被双冒号替换):
':'.join('{:x}'.format(random.randint(0, 2**16 - 1)) for i in range(8))
答案 1 :(得分:2)
要生成随机十六进制字符,您可以使用:
random.choice('abcdef' + string.digits)
然后,它应该足够简单,以IPv6地址的形式生成您的字符串。
您还可以在此处找到有关随机字符串生成的更多信息:Random string generation with upper case letters and digits in Python
答案 2 :(得分:0)
根据需要调整功能,这是较旧的python 2.x;但大多数是本地库。
import random, struct, socket
from random import getrandbits
print socket.inet_ntop(socket.AF_INET6, struct.pack('>QQ', getrandbits(64), getrandbits(64)))