从 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'>
我想从给定的 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'>