Python 生成短 UUID 的算法实现与代码详解
Python 原生 UUID 为 32 位十六进制字符串,长度较长且处理效率受限。本文介绍一种利用 62 个可打印字符(大小写字母加数字)将 32 位 UUID 压缩为 8 位的算法。通过将 UUID 分为 8 组,每组 4 个十六进制字符转换为整数后对 62 取模,以结果作为索引从字符集中提取字符,最终生成仅含 8 个字符的短 UUID。
Python 短 UUID 生成背景与算法原理
Python 标准库生成的 UUID 默认长度为 32 位十六进制字符串,这种较长的格式在某些场景下处理效率较低。
该算法使用 62 个可打印字符(包括大小写字母和数字)作为编码字符集。具体做法是随机生成一个 32 位的 UUID,由于 UUID 本身由十六进制构成,因此将其划分为 8 组,每组包含 4 个字符。接着对每组的十六进制数值进行模 62 运算,将得到的余数作为索引,从字符集中取出对应的字符。
经过上述处理,最终生成的 UUID 长度仅为 8 位。具体实现代码如下:
代码中使用的 uuid4 可以替换为 uuid1,以生成基于时间戳的 UUID。
核心代码实现
from uuid import uuid4
uuidChars = ("a", "b", "c", "d", "e", "f",
"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
"t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
"J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
"W", "X", "Y", "Z")
def short_uuid():
uuid = str(uuid4()).replace('-', '')
result = ''
for i in range(0,8):
sub = uuid[i * 4: i * 4 + 4]
x = int(sub,16)
result += uuidChars[x % 0x3E]
return result
print(short_uuid())
print(short_uuid())
print(short_uuid())
运行结果展示
运行上述代码后的输出结果如下:
6vT7sxFK F802Fj8C s7E3qzmD
总结
总结
以上介绍了 Python 生成短 UUID 的方法实例。如果读者有任何疑问,欢迎留言讨论,小编会及时回复。感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









