10進数をN進数(2〜36)に変換するプログラムを作ってみました。現状、私には用途はないのですが、ちょっと面白かったので・・・。
レイアウトは上の様にしました。
L=Label
TB=TextBox
B=Button
ソースの「-----------------」は区切り線なので記述の必要はありません。
青字は自動入力部分で修正の必要はありません。
黒字が入力部分です。
緑字はコメント文なので記述の必要はありません。
------------------
Public Class Form1
Private Sub Button1_Click(sender As Object,
e As EventArgs) Handles Button1.Click
' コードを実行しながらエラー処理を実行
Try
' TextBox1に入力された数値を取得
Dim number As Integer = Integer.Parse(TextBox1.Text)
' TextBox2に入力された進数を取得
Dim base As Integer = Integer.Parse(TextBox2.Text)
' TextBox1 に入力された数値を number 変数に ' TextBox2 に入力された進数を base 変数に格納
' 入力された進数が2から36の範囲内かどうかを確認
If base < 2 Or base > 36 Then
Label2.Text = "進数は2から36の間で指定してください。"
Return
End If
' 数値を指定された進数に変換
Dim result As String = ConvertToBase(number, base)
' Label2に変換結果を表示
Label2.Text = result
Catch ex As Exception
' try実行中にエラーが発生した際
' エラーメッセージをLabel2 に表示
Label2.Text = "正しい数値を入力してください。"
End Try
End Sub
' 指定された数値を指定された進数に変換する関数
' 変換する際にchars 文字列を使い余りを対応する文字に変換
Private Function ConvertToBase(ByVal number As Integer,
ByVal base As Integer) As String
Dim chars As String =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Dim result As String = String.Empty
Do While number > 0
result = chars(number Mod base) & result
number = number \ base
Loop
Return If(result = String.Empty, "0", result)
End Function
Private Sub Button2_Click(sender As Object,
e As EventArgs) Handles Button2.Click
TextBox1.ResetText()
TextBox2.ResetText()
Label2.ResetText()
End Sub
Private Sub Button3_Click(sender As Object,
e As EventArgs) Handles Button3.Click
End
End Sub
End Class
------------------ということで、起動したら[10進数]と[N進数のN値]を入力し・・・
[変換]で指定したN進数が表示されます。
何に使うのか解らない進数も・・・
大丈夫です。最も普通に意味プーですが・・・。
Visdual Studio 2022のBasicで作成しています。