水曜日, 9月 25, 2024

Visual Studio Basic_38 
入力した10進数を指定したN進数に変換

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で作成しています。
DecimalConversion100.zip
クリックするといきなりダウンロードが始まります。
実際のプログラム完成日は2024年8月10日です。
Windows版です。