Python 生成短 UUID 的算法实现与代码详解

林见深
林见深
发布时间:2026-10-14 | 2人浏览过
原创

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 的方法实例。如果读者有任何疑问,欢迎留言讨论,小编会及时回复。感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表