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

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

2009年7月22日水曜日

数値をx進数に変換してみる

10進数からx進数への変換のサンプルです。
とは言っても、
2進数、8進数、16進数のみです。
それぞれBin、Oct、Hex関数を使うだけの簡単なものです。
この中で使えそうなのは、BinとHex関数ですね。

入力できる10進数に限界があるのは、Long型だからです。
ノーツでは、数値はそこまでしか扱えないので、注意が必要です。

ヘルプを見ると分かりますが、BinやHexもLong型の限界までしか変換をサポートしていません(戻り値の最大桁数が決まっています)。


ちなみに、10進数への変換を行う関数はないんですね。ちょっと残念。


--------------------------------------------------------------------
Sub Click(Source As Button)
On Error Goto ErrProc

Const MSGTITLE = "数値のバイナリ表現"
Dim ret As String

'基本となる数値の入力
ret = Inputbox( "-2,147,483,648~2,147,483,647の数値を入力してください。", MSGTITLE, "0" )

'入力チェック
If ret = "" Then
Msgbox "キャンセルがクリックされたので、処理を中止します。", _
MB_OK + MB_ICONINFORMATION, MSGTITLE
Exit Sub
End If
If Not ( Isnumeric( ret ) ) Then
Msgbox "入力された値は数値ではありません。", _
MB_OK + MB_ICONEXCLAMATION, MSGTITLE
Exit Sub
End If

'x進数への変換結果
Msgbox _
"10進数表現:" & Chr$(9) & ret & Chr$(10) & _
" 2進数表現:" & Chr$(9) & Bin$( Clng(ret) ) & Chr$(10) & _
" 8進数表現:" & Chr$(9) & Oct$( Clng(ret) ) & Chr$(10) & _
"16進数表現:" & Chr$(9) & Hex$( Clng(ret) ), _
MB_OK + MB_ICONINFORMATION, MSGTITLE

Exit Sub

ErrProc:
Msgbox _
"エラーコード:" & Chr$(9) & Cstr(Err) & Chr$(10) & _
"エラーメッセージ:" & Chr$(9) & Error & Chr$(10) & _
"エラー発生行:" & Chr$(9) & Cstr(Erl), _
MB_OK + MB_ICONSTOP, MSGTITLE

Exit Sub
End Sub



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: