在 Python 中创建 UUID 时,如下所示:
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
怎么能将该 UUID 映射为由大写字母 AZ 减去字符 D、F、I、O、Q 和 U,再加上数字,再加上字符“+”和“=”组成的字符串。即从整数或字符串到 32 个(相对 OCR 友好)字符集:
[ABCEGHJKLMNPRSTVWXYZ1234567890+=]
我将其称为OCRf
集合(对 OCR 友好)。
我想要一个同构函数:
def uuid_to_ocr_friendly_chars(uid)
"""takes uid, an integer, and transposes it into a string made
of the the OCRf set
"""
...
我的第一个想法是完成将uuid更改为base 32的过程。例如
OCRf = "ABCEGHJKLMNPRSTVWXYZ1234567890+="
def uuid_to_ocr_friendly_chars(uid):
ocfstr = ''
while uid > 1:
ocfstr += OCRf[uid % 32]
uid /= 32
return ocfstr
但是,我想知道这种方法是否是进行这种转换的最佳和最快的方法 - 或者是否有更简单和更快的方法(例如内置、更智能的算法或更好的方法)。
我很感谢你的意见。谢谢你。