首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Python中生成唯一的64位整数?

如何从Python中生成唯一的64位整数?
EN

Stack Overflow用户
提问于 2010-08-20 19:09:10
回答 4查看 47.2K关注 0票数 41

我需要从Python生成唯一的64位整数。我已经检查过UUID module了。但是它生成的UUID是128位整数。所以这是行不通的。

你知道在Python中生成64位唯一整数的方法吗?谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-20 19:14:49

只需屏蔽128位整型

代码语言:javascript
复制
>>> import uuid
>>> uuid.uuid4().int & (1<<64)-1
9518405196747027403L
>>> uuid.uuid4().int & (1<<64)-1
12558137269921983654L

这些或多或少都是随机的,所以发生冲突的可能性很小

也许使用uuid1的前64位更安全

代码语言:javascript
复制
>>> uuid.uuid1().int>>64
9392468011745350111L
>>> uuid.uuid1().int>>64
9407757923520418271L
>>> uuid.uuid1().int>>64
9418928317413528031L

它们很大程度上是基于时钟的,所以随机性要小得多,但唯一性更好

票数 63
EN

Stack Overflow用户

发布于 2012-06-02 01:08:18

来自操作系统随机数生成器的64位随机数,而不是PRNG:

代码语言:javascript
复制
>>> from struct import unpack; from os import urandom
>>> unpack("!Q", urandom(8))[0]
12494068718269657783L
票数 8
EN

Stack Overflow用户

发布于 2018-11-07 22:47:37

您可以使用uuid4(),它会生成一个随机的128位整数UUID。我们必须对64位(即128 - (128 - 64))生成的每个128位整数进行“二进制右移”(>>)。

代码语言:javascript
复制
from uuid import uuid4

bit_size = 64
sized_unique_id = uuid4().int >> bit_size
print(sized_unique_id)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3530294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档