Создать класс, который преобразует десятичную систему счисления в двоичную - Visual Basic .NET
Формулировка задачи:
Привет!
Мне нужно создать класс который преобразует десятичную систему счисления в двоичный, восьмеричный и шестнадцатеричный без использования готовых методов...
Решение задачи: «Создать класс, который преобразует десятичную систему счисления в двоичную»
textual
Листинг программы
Option Strict On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim v As ULong = 2016
Dim IntToBaseN1 = New IntToBaseN(v)
MsgBox(String.Join(vbCrLf, _
New String() {String.Format("Bin = {0}", IntToBaseN1.ToBaseBin), _
String.Format("Oct = {0}", IntToBaseN1.ToBaseOct), _
String.Format("Hex = {0}", IntToBaseN1.ToBaseHex), _
String.Format("N32 = {0}", IntToBaseN1.ToBaseN(32))}))
End Sub
End Class
Public Class IntToBaseN
Private _value As ULong
'
Sub New(ByVal value As ULong)
_value = value
End Sub
'
Public Function ToBaseBin() As String
Return ToBaseN(2)
End Function
Public Function ToBaseOct() As String
Return ToBaseN(8)
End Function
Public Function ToBaseHex() As String
Return ToBaseN(16)
End Function
Public Function ToBaseN(ByVal base As Integer) As String
If base < 2 Or base > 36 Then Throw New ToBaseNException(base)
Dim d() As String = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
Dim v As ULong = _value
ToBaseN = String.Empty
Do
ToBaseN = d(CInt(v Mod base)) & ToBaseN
v = v \ CULng(base)
Loop While v > 0
Return ToBaseN
End Function
End Class
Public Class ToBaseNException
Inherits Exception
'
Protected Sub New()
MyBase.New()
End Sub
Public Sub New(ByVal value As Integer)
MyBase.New(String.Format("Base {0} out of range", value))
End Sub
End Class