我想为我的用户提供一个长十位数且随机化的唯一ID。我以前用过:
user.guid = str(uuid.uuid4()).replace('-','')
'5d2f251a32ed437689e7d66575aee09f'
但是,我也想让它更容易输入',因为在某些地方需要它。我正在考虑做:
>>> str(uuid.uuid4()).replace('-','')[:10].upper()
'AA6560AB32'
发生碰撞的可能性有多大?是否有更好的方法来保证唯一性(不存储以前添加的ID)?
答案 0 :(得分:1)
UUID字符串中的字母abcdef
是十六进制数字。因此,您可以毫无问题地将它们更改为大写。
UUID是保证唯一的128位数字。如果将其截断为40位(十位十六进制数字),则不再保证唯一。如果将用户区分开来是至关重要的,那么在将这些40位数字分配给用户之前,您可能应该对这些40位数字进行冲突测试。