数字を文字列に変換 | 技術日誌

技術日誌

ここでは,電子工作,木工などの趣味での記録を書いています。
なお当初はKMK研究所のメインテーマであるSPSのノウハウを書いてきましたが,順次SPSノウハウのページに複製を作っていきます。

 昔,アメリカでホリデーインの予約などするときの電話番号として1-800HOLIDAYと覚えていました。携帯での電話番号のキーパッドの数字の横にアルファベットが付いています。例えば2の所には,ABCと小さく書かれています。アルファベットは数字に結び付けられているのです。AもBもCも2なのです。すなわち,2の代わりにAでもBでもCでも良いのです。この様にすることで電話番号を覚えやすくしているのです。日本の通販で0120皆ニコニコなどとしているのと同じです。

 ネットのID登録で,6桁の数字を使うものがありました。ちょっと覚えにくかったので,アメリカの電話番号式に覚えようかと思いました。一つの数字に複数のアルファベットが割り当てられているので,たくさんの文字列が作れます。そこで,エクセルを用いて,その数値に対する出来得る全ての文字列を列記させるワークシートを作りました。下図黄色のセルに6桁の数値を入れるとU列に候補が列記されます。その中から覚えやすい文字列を探せばよいのです。なお,1にはアルファベットが割り当てられていません。0には+しか割り当てられていません。ここは適宜付け加えてみました。

 各数字に対して,4種類の文字のどれを選ぶか,全ての組み合わせを余すことなく選ぶのに4進法数値を用いました。各桁,0だと1番目の候補を,1だと2番目の候補を引き出します。4進法数値を000000から333333まで1行ごとに用意しました。これには上の行の4進法数値に1を加えたらどうなるか,各桁に対してif文を用いて表しました。これにはちょっと時間を要してしまいました。後で考えるとエクセルのBASE関数を用いればよかったと反省しています。BASE関数は10進数に対して任意の進法の値を返してくれます。例えば3987は4進法では332103です。左の方の空いている列に0, 1, 2, …と書いておいてそれを参照して4進法数値を出せばよかったのです。