从 uuid 生成 int

generate int from a uuid

我想从给定的 uuid 生成一个“随机”整数。我只关心给定 uuid,我将始终获得相同的 int。

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

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

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

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

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

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

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