从 uuid 生成 int

tam*_*irg 0 python uuid

我想从给定的 uuid 生成一个“随机”int。我所关心的是给定 uuid,我将始终得到相同的 int。

我知道 uuid 的范围比 python 中 int 的范围大得多,所以我冒着 2 个不同的 uuid 生成相同 int 的风险,但这是我愿意承担的风险。

所以我的问题是从给定的 uuid 生成这样的 int 的最佳方法是什么?我知道我可以使用 uuid 作为 random() 的种子并生成一个随机 int,但想知道是否有一个“更干净”的解决方案。

Shi*_*sei 6

实际上,您可以非常轻松地将 uuid 转换为 python 上的整数:

>>> import uuid
>>> int(uuid.uuid4())
101044264907663221935019178350016176435
Run Code Online (Sandbox Code Playgroud)

是的,这是一个非常大的数字,但是嘿,它“永远”不会重复,并且解决方案尽可能干净。

编辑:请记住,这是针对 python 3 的。在 python 2 上这也适用,但是,您将获得的数字将long代替int

>>> import uuid
>>> int(uuid.uuid4())
314613414059294171759586868273801197923L
>>> type(int(uuid.uuid4()))
<type 'long'>
Run Code Online (Sandbox Code Playgroud)