我需要从Python生成唯一的64位整数。我已经检查过UUID module了。但是它生成的UUID是128位整数。所以这是行不通的。
你知道在Python中生成64位唯一整数的方法吗?谢谢。
发布于 2010-08-20 19:14:49
只需屏蔽128位整型
>>> import uuid
>>> uuid.uuid4().int & (1<<64)-1
9518405196747027403L
>>> uuid.uuid4().int & (1<<64)-1
12558137269921983654L
这些或多或少都是随机的,所以发生冲突的可能性很小
也许使用uuid1的前64位更安全
>>> uuid.uuid1().int>>64
9392468011745350111L
>>> uuid.uuid1().int>>64
9407757923520418271L
>>> uuid.uuid1().int>>64
9418928317413528031L
它们很大程度上是基于时钟的,所以随机性要小得多,但唯一性更好
发布于 2012-06-02 01:08:18
来自操作系统随机数生成器的64位随机数,而不是PRNG:
>>> from struct import unpack; from os import urandom
>>> unpack("!Q", urandom(8))[0]
12494068718269657783L
发布于 2018-11-07 22:47:37
您可以使用uuid4()
,它会生成一个随机的128位整数UUID。我们必须对64位(即128 - (128 - 64)
)生成的每个128位整数进行“二进制右移”(>>
)。
from uuid import uuid4
bit_size = 64
sized_unique_id = uuid4().int >> bit_size
print(sized_unique_id)
https://stackoverflow.com/questions/3530294
复制相似问题