Der Zahlensystem-Unwandler wurde in Visual Basic.Net geschrieben und kann jetzt als Open Source bezogen werden.
Der Download zum Visual Studio 2008 Projekt befindet sich rechts im Bild.
Imports System Imports System.Collections.Generic Imports System.Text Imports System.Exception Imports System.Math Imports System.Diagnostics Imports System.Threading Class lowNumberSystemToDecimal Function lNSTD(ByVal strReadInputSave As String, ByVal strReadGetNumberSystem As String, ByVal strReadSetNumberSystem As String) As String Dim i As Integer Dim y As Double = 0 Dim z As Integer = strReadInputSave.Length Dim v As Double = 100000000 Dim doubleGet As Double Dim strGetBetween As String Dim doubleSet As Double Dim doubleReturn As Double Dim doubleReturn_new_division As Double Dim doubleReturn_new_save(v) As Double Dim strReturn_new_save(v) As String Dim doubleReturn_new_save_between As Double Dim doubleReadGetNumberSystem As Double doubleReadGetNumberSystem = Convert.ToDouble(strReadGetNumberSystem) ' Zahlensystem der zu konfertierenden Zahl For i = 1 To strReadInputSave.Length strGetBetween = strReadInputSave.Substring(z - i, 1).ToUpper() ' EDIT for Hexadecimal ANFANG ' If strGetBetween = "A" Then doubleGet = 10 ElseIf strGetBetween = "B" Then doubleGet = 11 ElseIf strGetBetween = "C" Then doubleGet = 12 ElseIf strGetBetween = "D" Then doubleGet = 13 ElseIf strGetBetween = "E" Then doubleGet = 14 ElseIf strGetBetween = "F" Then doubleGet = 15 Else doubleGet = Convert.ToDouble(strGetBetween) End If ' EDIT for Hexadecimal ENDE ' doubleSet = Pow(doubleReadGetNumberSystem, i - 1) doubleReturn += doubleGet * doubleSet Next i doubleReturn_new_division = doubleReturn Do While (doubleReturn_new_division <> 0) doubleReturn_new_save(y) = doubleReturn_new_division Mod strReadSetNumberSystem doubleReturn_new_save_between = doubleReturn_new_save(y) doubleReturn_new_division \= strReadSetNumberSystem If Convert.ToString(doubleReturn_new_save_between) = "10" Then strReturn_new_save(y) = "A" ElseIf Convert.ToString(doubleReturn_new_save_between) = "11" Then strReturn_new_save(y) = "B" ElseIf Convert.ToString(doubleReturn_new_save_between) = "12" Then strReturn_new_save(y) = "C" ElseIf Convert.ToString(doubleReturn_new_save_between) = "13" Then strReturn_new_save(y) = "D" ElseIf Convert.ToString(doubleReturn_new_save_between) = "14" Then strReturn_new_save(y) = "E" ElseIf Convert.ToString(doubleReturn_new_save_between) = "15" Then strReturn_new_save(y) = "F" Else strReturn_new_save(y) = Convert.ToString(doubleReturn_new_save_between) End If y = y + 1 Loop Dim erg As String = "" Do Until (y < 0) erg &= strReturn_new_save(y) y = y - 1 Loop If strReadSetNumberSystem = 10 Then Return doubleReturn Else Return erg End If End Function End Class Module Start Sub Main() Console.Title() = "Simple number system calculator" Console.WriteLine("===========================================================") Console.WriteLine("== Number system calculator === Freeware by Patrick Apel ==") Console.WriteLine("===========================================================") Console.WriteLine("") Console.WriteLine("Please use the following format:") Console.WriteLine("[number]-[number system of the number]-[number system to convert in]") Console.WriteLine("") Console.WriteLine("") Console.WriteLine("For example:") Console.WriteLine("11101-2-10") Console.WriteLine("") Console.WriteLine("") Console.WriteLine("Explication:") Console.WriteLine("11101[number]-2[binary number system]-10[decimal number system]") Console.WriteLine("") Console.WriteLine("") Console.WriteLine("Press the 'return' button to get the result.") Console.WriteLine("") Console.WriteLine("Type in 'exit' to close the application.") Console.WriteLine("") Console.WriteLine("===========================================================") Dim strReadInput As String = "" Do While (strReadInput <> "exit") Console.WriteLine("") Console.WriteLine("Please type in the data you wish to convert:") Console.WriteLine("") strReadInput = Console.ReadLine() If strReadInput = "exit" Then Exit Do Exit Sub End If NewSub(strReadInput) Loop End Sub Sub NewSub(ByVal strReadInput As String) Dim strReadInputSave As String = "" Dim x As Integer x = 0 Dim strReadGetNumberSystem As String = "" Dim strReadSetNumberSystem As String = "" Try Do While (strReadInput.Substring(x, 1) <> "-") strReadInputSave += strReadInput.Substring(x, 1) x = x + 1 If strReadInput.Substring(x, 1) = "-" Then x = x + 1 'Damit die nächste Zahl gewählt wird und nicht der Strich Do While (strReadInput.Substring(x, 1) <> "-") strReadGetNumberSystem += strReadInput.Substring(x, 1) x = x + 1 If strReadInput.Substring(x, 1) = "-" Then x = x + 1 Do While (x <> strReadInput.Length) strReadSetNumberSystem += strReadInput.Substring(x, 1) x = x + 1 Loop Exit Do End If Loop Exit Do End If Loop Console.WriteLine("") Console.WriteLine("The result:") Dim mylNSTD As New lowNumberSystemToDecimal() Dim doubleErgUm As String If strReadGetNumberSystem <= 16 Then doubleErgUm = mylNSTD.lNSTD(strReadInputSave, strReadGetNumberSystem, strReadSetNumberSystem) Console.WriteLine(doubleErgUm) Else Console.WriteLine("Number systems above 16 are not supported.") End If Catch exa As ArgumentOutOfRangeException Console.WriteLine("Please use the right format.") Console.WriteLine("Spaces are not allowed.") Console.WriteLine("") Catch exf As FormatException Console.WriteLine("Please use the right format.") Console.WriteLine("Spaces are not allowed.") Console.WriteLine("") Catch exov As OverflowException Console.WriteLine("The output of such a long number is not supported.") Console.WriteLine("") Catch exou As OutOfMemoryException Console.WriteLine("The output of such a long number is not supported.") Console.WriteLine("") Catch exi As InvalidCastException Console.WriteLine("Please use the right format.") Console.WriteLine("Spaces are not allowed.") Console.WriteLine("") End Try Exit Sub End Sub End Module







Seite 1 von 1 1
Der Zahlensystem-Umwandler befindet sich im Download-Archiv als Visual Studio 2008 Projekt.
Anhand des Source Codes kann man nachvollziehen, wie Zahlensysteme generell umgewandelt werden. So kann nachvollzogen werden, wie man ein Zahlensystem im Kopf umwandelt.
Das .Net Framework bietet nämlich einfachere Möglichkeiten (Objekte, Methoden), um Zahlensysteme umzuwandeln.