При создании UUID в Python, likeo:
>>> uuid.uuid1()
UUID('a8098c1a-f86e-11da-bd1a-00112444be1e')
Как можно отобразить этот UUID в строку, состоящую из заглавного алфавита AZ, без символов D, F, I, O, Q и U, плюс числовые цифры, а также символы "+" и "=" , то есть из целого числа или строки в набор из 32 (относительно дружественных OCR) символов:
[ABCEGHJKLMNPRSTVWXYZ1234567890+=]
Я назову этот набор OCRf
(для распознавания текста).
Я бы хотел иметь изоморфную функцию:
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
Однако я хотел бы знать, является ли этот метод лучшим и быстрым способом преобразования, или же существует более простой и быстрый метод (например, встроенный, более умный алгоритм или просто лучший метод).
Я благодарен за ваш вклад. Спасибо.