[Python] 62進数関数はじめました

2018年4月27日

Python テクノロジー プログラミング 特集

以前にPHPとJavascriptで書いた62進数プログラムを各種言語でライブラリ化しておこうと思って、今回はpythonでコーディングしておきました。 WEBエンジニアをやっていると、データ容量を一文字でも減らしたい時があります。 膨大なログデータは、レコードの文字数が少ないほどメンテナンススピードもアップするものです。 データ圧縮技術を使ってもいいんですが、数値データを62進数にする事で、かなりの恩恵が得られます。 ちなみに、日付と時間フォーマットをこの方法で圧縮すると1/2ぐらいのインパクトがあるので、使わない手はありません。 そんな便利なコードをいろんな言語に移植しておくことは、今後のためになるので、気になる人は使ってみてください。

ソースコード

※実行テストも兼ねたソースコードになっているので、ライブラリとして使いたい場合は、上部のみでお使いください。 #coding: utf-8 # 文字列62個 decimal62_char = "0123456789"; decimal62_char += "abcdefghijklmnopqrstuvwxyz"; decimal62_char += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; def decimal62_encode(num): str = [] cn = len(decimal62_char) while num != 0: a1 = int(num / cn); a2 = num - (a1 * cn); s = decimal62_char[a2] str.insert(0,s) num = a1 res = "".join(str); return res; def decimal62_decode(str16): chrs = {}; cn = len(decimal62_char) for i in range(0 , cn): chrs[decimal62_char[i]] = i num = 0 for i in range(0 , len(str16)): s = str16[(i+1)*-1] p = pow(cn , i) num += chrs[s] * p return num print "encode : ",decimal62_encode(20180425231245) print "decode : ",decimal62_decode("5JhPVGod")

実行テスト

$ python /var/www/html/labo/python/decimal16.py > encode : 5JhPVGod > decode : 20180425231245 プログラムをそのまま実行すると、encodeして同じ値をデコードするようにしています。 きちんと、元に戻っているので、成功ですね。

多言語対応

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。