Results 1 to 7 of 7

Thread: VB.NET - Number Conversion

  1. #1

    Thread Starter
    Fanatic Member x-ice's Avatar
    Join Date
    Mar 2004
    Location
    UK
    Posts
    671

    Post VB.NET - Number Conversion

    Convert Decimal - Binary, Decimal - Octal and Decimal - Hexadecimal

    To call the function/s you would do:
    VB Code:
    1. Dim NumConv As New clsNumConv()
    2. 'Convert decimal to Binary
    3. txtNum.Text = NumConv.Dec2Bin(CInt(txtNum.Text), True)
    4. 'Convert decimal to Octal
    5. txtNum.Text = NumConv.Dec2Oct(CInt(txtNum.Text), True)
    6. 'Convert decimal to Hex
    7. txtNum.Text = NumConv.Dec2Hex(CInt(txtNum.Text), True)
    Decimal to Binary
    VB Code:
    1. Option Explicit On
    2. Option Strict On
    3.  
    4. Imports System.Math
    5.  
    6. Public Class clsNumConv
    7.     Public Function Dec2Bin(ByVal DecNum As Integer, ByVal ShowDecNum As Boolean) As String
    8.         Dim DivNum As Integer
    9.         'Establish how many divisions will be done, +1 for number rounding
    10.         DivNum = CInt(Log(DecNum) / (Log(2)) + 1)
    11.         'Create array with number of columns needed according to 'DivNum'
    12.         Dim BinNums(DivNum, 2) As Integer
    13.         'Assign 'DecNum' to column 1, row 0 of array
    14.         BinNums(0, 1) = CInt(DecNum)
    15.         Dim RowNum As Integer = 1 'Divisions loop counter
    16.         Dim RevBinNum As String
    17.         'Calculate divisions
    18.         For RowNum = 1 To UBound(BinNums) 'To highest subscript of array
    19.             'Divide previous value by 2
    20.             BinNums(RowNum, 1) = CInt(BinNums(RowNum - 1, 1) \ 2)
    21.             'Calculate modulus
    22.             BinNums(RowNum, 2) = CInt(BinNums(RowNum - 1, 1) Mod 2)
    23.             'Make binary number string
    24.             RevBinNum &= CStr(BinNums(RowNum, 2))
    25.         Next
    26.         Dim FinalBinNum As String
    27.         'Assign string to 'RevBinNum'" (reverse the string, as the binary number is backwards)
    28.         FinalBinNum = StrReverse(RevBinNum)
    29.         'Remove leading zeros
    30.         FinalBinNum = FinalBinNum.TrimStart("0"c)
    31.         'Check "ShowDecNum" to establish whether or not to show original number
    32.         If ShowDecNum = True Then
    33.             'Output binary number, along with original decimal number
    34.             Return DecNum & "(10)" & " = " & FinalBinNum & "(2)"
    35.         Else
    36.             'Output binary number
    37.             Return FinalBinNum & "(2)"
    38.         End If
    39.     End Function
    Last edited by x-ice; Dec 14th, 2006 at 01:21 PM.

  2. #2

    Thread Starter
    Fanatic Member x-ice's Avatar
    Join Date
    Mar 2004
    Location
    UK
    Posts
    671

    Re: VB.NET - Number Conversion

    Decimal to Octal
    VB Code:
    1. Public Function Dec2Oct(ByVal DecNum As Integer, ByVal ShowDecNum As Boolean) As String
    2.         Dim DivNum As Integer
    3.         'Establish how many divisions will be done, +1 for number rounding
    4.         DivNum = CInt(Log(DecNum) / (Log(8)) + 1)
    5.         'Create array with number of columns needed according to 'DivNum'
    6.         Dim OctNums(DivNum, 2) As Integer
    7.         'Assign 'DecNum' to column 1, row 0 of array
    8.         OctNums(0, 1) = CInt(DecNum)
    9.         Dim RowNum As Integer = 1 'Divisions loop counter
    10.         Dim RevOctNum As String
    11.         'Calculate divisions
    12.         For RowNum = 1 To UBound(OctNums) 'To highest subscript of array
    13.             'Divide previous value by 8
    14.             OctNums(RowNum, 1) = CInt(OctNums(RowNum - 1, 1) \ 8)
    15.             'Calculate Modulus
    16.             OctNums(RowNum, 2) = CInt(OctNums(RowNum - 1, 1) Mod 8)
    17.             'Make octal number string
    18.             RevOctNum &= CStr(OctNums(RowNum, 2))
    19.         Next
    20.         Dim FinalOctNum As String
    21.         'Assign string to 'RevOctNum'" (reverse the string, as the octal number is backwards)
    22.         FinalOctNum = StrReverse(RevOctNum)
    23.         'Remove leading zeros
    24.         FinalOctNum = FinalOctNum.TrimStart("0"c)
    25.         'Check "ShowDecNum" to establish whether or not to show original number
    26.         If ShowDecNum = True Then
    27.             'Output octal number, along with original decimal number
    28.             Return DecNum & "(10)" & " = " & FinalOctNum & "(8)"
    29.         Else
    30.             'Output octal number
    31.             Return FinalOctNum & "(8)"
    32.         End If
    33.     End Function
    Last edited by x-ice; Dec 14th, 2006 at 01:19 PM.

  3. #3

    Thread Starter
    Fanatic Member x-ice's Avatar
    Join Date
    Mar 2004
    Location
    UK
    Posts
    671

    Re: VB.NET - Number Conversion

    Decimal to Hexadecimal
    VB Code:
    1. Public Function Dec2Hex(ByVal DecNum As Integer, ByVal ShowDecNum As Boolean) As String
    2.         Dim DivNum As Integer
    3.         'Establish how many divisions will be done, +1 for number rounding
    4.         DivNum = CInt(Log(DecNum) / (Log(16)) + 1)
    5.         'Create array with number of columns needed according to 'DivNum'
    6.         Dim HexNums(DivNum, 2) As String 'Must be string to hold hex values
    7.         'Assign 'DecNum' to column 1, row 0 of array
    8.         HexNums(0, 1) = CStr(DecNum)
    9.         Dim RowNum As Integer = 1 'Divisions loop counter
    10.         Dim RevHexNum As String
    11.         'Calculate divisions
    12.         For RowNum = 1 To UBound(HexNums) 'To highest subscript of array
    13.             'Divide previous value by 16
    14.             HexNums(RowNum, 1) = CStr(CInt(HexNums(RowNum - 1, 1)) \ 16)
    15.             Dim modValue As Integer
    16.             'Calculate Modulus
    17.             modValue = CInt(HexNums(RowNum - 1, 1)) Mod 16
    18.             'Convert numbers above 9 to hex A-F
    19.             Select Case modValue
    20.                 Case 10
    21.                     'Convert number to hex A
    22.                     HexNums(RowNum, 2) = "A"
    23.                 Case 11
    24.                     'Convert number to hex B
    25.                     HexNums(RowNum, 2) = "B"
    26.                 Case 12
    27.                     'Convert number to hex C
    28.                     HexNums(RowNum, 2) = "C"
    29.                 Case 13
    30.                     'Convert number to hex D
    31.                     HexNums(RowNum, 2) = "D"
    32.                 Case 14
    33.                     'Convert number to hex E
    34.                     HexNums(RowNum, 2) = "E"
    35.                 Case 15
    36.                     'Convert number to hex F
    37.                     HexNums(RowNum, 2) = "F"
    38.                 Case Else
    39.                     'Number is not above 9, so use original number
    40.                     HexNums(RowNum, 2) = CStr(modValue)
    41.             End Select
    42.             'Make hex number string
    43.             RevHexNum &= CStr(HexNums(RowNum, 2))
    44.         Next
    45.         Dim FinalHexNum As String
    46.         'Assign string to 'RevHexNum'" (reverse the string, as the hex number is backwards)
    47.         FinalHexNum = StrReverse(RevHexNum)
    48.         'Remove leading zeros
    49.         FinalHexNum = FinalHexNum.TrimStart("0"c)
    50.         'Check "ShowDecNum" to establish whether or not to show original number
    51.         If ShowDecNum = True Then
    52.             'Output hex number, along with original decimal number
    53.             Return DecNum & "(10)" & " = " & FinalHexNum & "(16)"
    54.         Else
    55.             'Output hex number
    56.             Return FinalHexNum & "(16)"
    57.         End If
    58.     End Function
    59. End Class
    Last edited by x-ice; Dec 14th, 2006 at 01:20 PM.

  4. #4
    Super Moderator jmcilhinney's Avatar
    Join Date
    May 2005
    Location
    Sydney, Australia
    Posts
    111,221

    Re: VB.NET - Number Conversion

    Note that

    Math.Floor(int1 / int2)

    is the same as

    int1 \ int2
    Why is my data not saved to my database? | MSDN Data Walkthroughs
    VBForums Database Development FAQ
    My CodeBank Submissions: VB | C#
    My Blog: Data Among Multiple Forms (3 parts)
    Beginner Tutorials: VB | C# | SQL

  5. #5

    Thread Starter
    Fanatic Member x-ice's Avatar
    Join Date
    Mar 2004
    Location
    UK
    Posts
    671

    Re: VB.NET - Number Conversion

    Quote Originally Posted by jmcilhinney
    Note that

    Math.Floor(int1 / int2)

    is the same as

    int1 \ int2
    Ok, sorted it.

  6. #6
    Super Moderator jmcilhinney's Avatar
    Join Date
    May 2005
    Location
    Sydney, Australia
    Posts
    111,221

    Re: VB.NET - Number Conversion

    This will work for all bases up to 16 and for negative numbers:
    VB Code:
    1. Public Function DecToBin(ByVal decNum As Integer) As String
    2.         Return DecToBaseX(decNum, 2)
    3.     End Function
    4.  
    5.     Public Function DecToOct(ByVal decNum As Integer) As String
    6.         Return DecToBaseX(decNum, 8)
    7.     End Function
    8.  
    9.     Public Function DecToHex(ByVal decNum As Integer) As String
    10.         Return DecToBaseX(decNum, 16)
    11.     End Function
    12.  
    13.     Public Function DecToBaseX(ByVal decNum As Integer, ByVal base As Integer) As String
    14.         Dim isNegative As Boolean = decNum < 0
    15.         Dim newBaseNum As String = String.Empty
    16.         Dim modVal As Integer
    17.  
    18.         decNum = Math.Abs(decNum)
    19.  
    20.         Do
    21.             modVal = decNum Mod base
    22.  
    23.             Select Case modVal
    24.                 Case 15
    25.                     newBaseNum = "F" & newBaseNum
    26.                 Case 14
    27.                     newBaseNum = "E" & newBaseNum
    28.                 Case 13
    29.                     newBaseNum = "D" & newBaseNum
    30.                 Case 12
    31.                     newBaseNum = "C" & newBaseNum
    32.                 Case 11
    33.                     newBaseNum = "B" & newBaseNum
    34.                 Case 10
    35.                     newBaseNum = "A" & newBaseNum
    36.                 Case Else
    37.                     newBaseNum = modVal.ToString() & newBaseNum
    38.             End Select
    39.  
    40.             decNum = decNum \ base
    41.         Loop While decNum > 0
    42.  
    43.         If isNegative Then
    44.             newBaseNum = "-" & newBaseNum
    45.         End If
    46.  
    47.         Return newBaseNum
    48.     End Function
    Why is my data not saved to my database? | MSDN Data Walkthroughs
    VBForums Database Development FAQ
    My CodeBank Submissions: VB | C#
    My Blog: Data Among Multiple Forms (3 parts)
    Beginner Tutorials: VB | C# | SQL

  7. #7
    Super Moderator jmcilhinney's Avatar
    Join Date
    May 2005
    Location
    Sydney, Australia
    Posts
    111,221

    Re: VB.NET - Number Conversion

    Just had a look and the Convert.ToString(Int32, Int32) method also provides this functionality.
    Why is my data not saved to my database? | MSDN Data Walkthroughs
    VBForums Database Development FAQ
    My CodeBank Submissions: VB | C#
    My Blog: Data Among Multiple Forms (3 parts)
    Beginner Tutorials: VB | C# | SQL

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width