当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2018年5月18日金曜日

10進数と16進数の相互変換を考えてみよう

久しぶりの投稿です。
今日は簡単なtipsです。できないと困ることだったので備忘録的に載せておきます。

10進数から16進数への変換やその逆を行いたいということがあります。
当ブログでもいくつか記事を載せています。
16進数を10進数に変換する関数を自作してみた
x進数を10進数に変換する関数
数値をx進数に変換してみる

ただ、今回はこれらを「XPages」(というかjavascript)で行いたいと思ったんです!そういう時ってありますよね?・・・あるんです。



そこで調べたところ、あっという間にわかってしまいました・・・
そのまま載せてしまっても芸がないので、
SSJSでもできるのかどうかの検証を行いつつ、その結果を載せることにしましょう。

まずは、10進数から16進数への変換について。
こちらに掲載されています。
Number.prototype.toString()

Number([数値]).toString(16);

[数値]は入力した値で、toString()の引数の"16"がx進数のことを表しています。

次に、16進数から10進数への変換について。
こちらも掲載されていますね。
parseInt()

parseInt( [数値], 16 );

[数値]は入力した値で、16は入力された値は16進数であることを意味しています。


あとは検証です。
こんな画面を作ってみました。
XPagesの検証画面

入力用は、「inputData1」というIDの編集ボックス
出力用は、「outputData1」「outputData2」というIDの計算結果フィールド(小数点を出したくなかったので、文字列と数値(整数)の2つを用意しています)
を配置してあります。

「10進数から16進数への変換」のボタンの式は
var dtInput  = getComponent( "inputData1" ).getValue();
var dtOutput = Number(dtInput).toString(16);
getComponent( "outputData1" ).setValue( dtOutput );


「16進数から10進数への変換」のボタンの式は
var dtInput  = getComponent( "inputData1" ).getValue();
var dtOutput = parseInt( dtInput, 16 );
getComponent( "outputData2" ).setValue( dtOutput );


としてあります。

実行結果はこちら。
16進数の「C0」を10進数に変換

はい。こんな感じで、変換できました。
JavaScriptですが、SSJSでも動くことが分かっていただければ幸いです。


何に使うかは・・・どうぞ想像してみてください。
色々ありますよね。







それでは今日はこの辺で・・・


Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: