UTF-8を利用したN進数変換関数(MD5を10桁に短く漢字で圧縮)

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

ASCIIの英数字や記号だけでは限界があって食えないならUTF-8の漢字や他の文字を使えばいいじゃない

タイトルのままですが、UTF-8の文字コードを利用して数値をN進数に変換する関数です。

16進数、32進数、64進数ではASCIIの英数字と記号を使って表現しますが、それ以上となるとASCIIの文字コード表では文字数が足りず限界があります。しかし、我々のような2バイト文字圏では平仮名・カタカナ・漢字があります。アラビヤ文字やハングル文字などもあります。

醤油も書けないくせに何を言ってるのか、と。その通りなのですが、例えばMD5のハッシュ値32桁を、漢字を利用して普通はありえない8000進数とかに変換して10桁の漢字の文字列に短く(圧縮)できたりします。(それでも10桁、、、アルファベット圏の人がマルチバイトを嫌がるのもわかる気がします)

動作デモ

`$s`の値を適当に変えて「実行(Ctrl+Enter)」ボタンを押して見てください。下の「出力」タブに実行結果が出力されます。自由にいじってもリロードすれば戻るので安心して触ってください。

mb_base_encode(base_encodeをマルチバイト対応させた)関数

関数内の`mb_range`で漢字を範囲しているのがベースとなる文字で、その文字数ぶんの基数でエンコードしてくれます。

関連記事

GoogleスプレッドシートでMD5関数・4桁の短いハッシュを取得する関数... MD5関数とMD5を4桁まで短くしたハッシュ値をGoogleSpreadsheetsのセルで使う為のGoogleAppsScript(GAS) Googleスプレッドシートのセル内に`=MD5( A1 )`といった計算式を入れるだけで、引数もしくは参照先のセルの値をMD5でハッシュした文字列を返す...
64ビットを16進数で表現すると 64bit(2進数で64桁の1)は、16進数表記で"F"が16桁になります。 FFFF FFFF FFFF FFFF MD5は何ビット? 64ビットが16桁の16進数とするとMD5は32桁の16進数であるため、倍の128ビットになります。 MD5の値をSQLiteのINTEGER P...

スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告