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 をベース 32 に変更するプロセスを経ることです。
OCRf = "ABCEGHJKLMNPRSTVWXYZ1234567890+="
def uuid_to_ocr_friendly_chars(uid):
ocfstr = ''
while uid > 1:
ocfstr += OCRf[uid % 32]
uid /= 32
return ocfstr
ただし、この方法がこの変換を行うための最良かつ最速の方法であるかどうか、またはより簡単で高速な方法 (組み込み、よりスマートなアルゴリズム、または単に優れた方法など) があるかどうかを知りたいです。
ご意見をお寄せいただきありがとうございます。ありがとうございました。