generate int from a uuid



我想生成一个"随机";给定uuid中的int。我所关心的是,给定uuid,我将始终获得相同的int。

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

所以我的问题是,从给定的uuid生成这样的int的最佳方式是什么?我知道我也许可以使用uuid作为random((的种子,然后生成一个随机int,但我想知道是否有一个"清洁剂";解决方案

您实际上可以很容易地在python上将uuid转换为int:

>>> import uuid
>>> int(uuid.uuid4())
101044264907663221935019178350016176435

是的,这是一个很大的数字,但嘿,它会"从不";重复,溶液尽可能干净。

编辑:请记住,这是针对python 3的。在python 2上,这也有效,但是,您将获得的数字将是long,而不是int:

>>> import uuid
>>> int(uuid.uuid4())
314613414059294171759586868273801197923L
>>> type(int(uuid.uuid4()))
<type 'long'>

UUID对象还有一个int属性,您可以直接调用它。例如:

import uuid
print(uuid.uuid4().int)

int属性返回一个128位整数。

来源:https://docs.python.org/3/library/uuid.html#uuid.UUID.int

最新更新