GUID生成的ID太长, 不方便使用, 我想生成一个短的, 最好不要有特殊字符, 另外, 只在本机使用, 不跨网络, 所以我使用当前时间作为生成的ID, 为了使生成的ID更短一些, 对它进行重新编码; 另外, 为防止短时间内有重复的ID, 记录上次生成的ID并进行重复判断.
代码如下:
def GenerateId()->str:
'''生成唯一ID标记, 由大写字母和数字组成, 形如:AGEPAW5WOM'''
def _Tmp()->str:
'''根据毫秒数生成唯一ID'''
# 获取当前时间的时间戳(毫秒级)
milliseconds = int(time.time() * 1000)
# 将整数转换为字节串
num_bytes = milliseconds.to_bytes((milliseconds.bit_length() + 7) // 8, 'big')
# 生成唯一ID, 由大写字母和数字组成
short_uid = base64.b32encode(num_bytes).decode('utf-8').rstrip('=')
return short_uid
short_uid = _Tmp()
# 如果生成的ID和上次相同, 则等待一段时间重新生成
if _Vars.LastId!=None and short_uid==_Vars.LastId:
time.sleep(0.001) # 等待1毫秒, 肯定没有问题了
short_uid = _Tmp()
_Vars.LastId = short_uid
return short_uid
最后生成的ID形如:AGEPAW5WOM, 只有10个字符.
标签:Tmp,short,uid,Python,生成,LastId,简短,ID From: https://www.cnblogs.com/huzhongqiang/p/17502418.html