' 用途:将十进制转化为二进制

' 输入:Dec(十进制数)

' 输入数据类型:Long

' 输出:DEC_to_BIN(二进制数)

' 输出数据类型:String

' 输入的最大数为2147483647,输出最大数为1111111111111111111111111111111(31个1)

Public Function DEC_to_BIN(Dec As Long) As String

    DEC_to_BIN = ""

    Do While Dec > 0

        DEC_to_BIN = Dec Mod 2 & DEC_to_BIN

        Dec = Dec \ 2

    Loop

End Function


' 用途:将二进制转化为十进制

' 输入:Bin(二进制数)

' 输入数据类型:String

' 输出:BIN_to_DEC(十进制数)

' 输出数据类型:Long

' 输入的最大数为1111111111111111111111111111111(31个1),输出最大数为2147483647

Public Function BIN_to_DEC(ByVal Bin As String) As Long

    Dim i As Long

    For i = 1 To Len(Bin)

        BIN_to_DEC = BIN_to_DEC * 2 + Val(Mid(Bin, i, 1))

    Next i

End Function


' 用途:将十六进制转化为二进制

' 输入:Hex(十六进制数)

' 输入数据类型:String

' 输出:HEX_to_BIN(二进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function HEX_to_BIN(ByVal Hex As String) As String

    Dim i As Long

    Dim B As String

    

    Hex = UCase(Hex)

    For i = 1 To Len(Hex)

        Select Case Mid(Hex, i, 1)

            Case "0": B = B & "0000"

            Case "1": B = B & "0001"

            Case "2": B = B & "0010"

            Case "3": B = B & "0011"

            Case "4": B = B & "0100"

            Case "5": B = B & "0101"

            Case "6": B = B & "0110"

            Case "7": B = B & "0111"

            Case "8": B = B & "1000"

            Case "9": B = B & "1001"

            Case "A": B = B & "1010"

            Case "B": B = B & "1011"

            Case "C": B = B & "1100"

            Case "D": B = B & "1101"

            Case "E": B = B & "1110"

            Case "F": B = B & "1111"

        End Select

    Next i

    While Left(B, 1) = "0"

        B = Right(B, Len(B) - 1)

    Wend

    HEX_to_BIN = B

End Function


' 用途:将二进制转化为十六进制

' 输入:Bin(二进制数)

' 输入数据类型:String

' 输出:BIN_to_HEX(十六进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function BIN_to_HEX(ByVal Bin As String) As String

    Dim i As Long

    Dim H As String

    If Len(Bin) Mod 4 <> 0 Then

        Bin = String(4 - Len(Bin) Mod 4, "0") & Bin

    End If

    

    For i = 1 To Len(Bin) Step 4

        Select Case Mid(Bin, i, 4)

            Case "0000": H = H & "0"

            Case "0001": H = H & "1"

            Case "0010": H = H & "2"

            Case "0011": H = H & "3"

            Case "0100": H = H & "4"

            Case "0101": H = H & "5"

            Case "0110": H = H & "6"

            Case "0111": H = H & "7"

            Case "1000": H = H & "8"

            Case "1001": H = H & "9"

            Case "1010": H = H & "A"

            Case "1011": H = H & "B"

            Case "1100": H = H & "C"

            Case "1101": H = H & "D"

            Case "1110": H = H & "E"

            Case "1111": H = H & "F"

        End Select

    Next i

    While Left(H, 1) = "0"

        H = Right(H, Len(H) - 1)

    Wend

    BIN_to_HEX = H

End Function


' 用途:将十六进制转化为十进制

' 输入:Hex(十六进制数)

' 输入数据类型:String

' 输出:HEX_to_DEC(十进制数)

' 输出数据类型:Long

' 输入的最大数为7FFFFFFF,输出的最大数为2147483647

Public Function HEX_to_DEC(ByVal Hex As String) As Long

    Dim i As Long

    Dim B As Long

    

    Hex = UCase(Hex)

    For i = 1 To Len(Hex)

        Select Case Mid(Hex, Len(Hex) - i + 1, 1)

            Case "0": B = B + 16 ^ (i - 1) * 0

            Case "1": B = B + 16 ^ (i - 1) * 1

            Case "2": B = B + 16 ^ (i - 1) * 2

            Case "3": B = B + 16 ^ (i - 1) * 3

            Case "4": B = B + 16 ^ (i - 1) * 4

            Case "5": B = B + 16 ^ (i - 1) * 5

            Case "6": B = B + 16 ^ (i - 1) * 6

            Case "7": B = B + 16 ^ (i - 1) * 7

            Case "8": B = B + 16 ^ (i - 1) * 8

            Case "9": B = B + 16 ^ (i - 1) * 9

            Case "A": B = B + 16 ^ (i - 1) * 10

            Case "B": B = B + 16 ^ (i - 1) * 11

            Case "C": B = B + 16 ^ (i - 1) * 12

            Case "D": B = B + 16 ^ (i - 1) * 13

            Case "E": B = B + 16 ^ (i - 1) * 14

            Case "F": B = B + 16 ^ (i - 1) * 15

        End Select

    Next i

    HEX_to_DEC = B

End Function

' 用途:将十进制转化为十六进制

' 输入:Dec(十进制数)

' 输入数据类型:Long

' 输出:DEC_to_HEX(十六进制数)

' 输出数据类型:String

' 输入的最大数为2147483647,输出最大数为7FFFFFFF

Public Function DEC_to_HEX(Dec As Long) As String

    Dim a As String

    DEC_to_HEX = ""

    Do While Dec > 0

        a = CStr(Dec Mod 16)

        Select Case a

            Case "10": a = "A"

            Case "11": a = "B"

            Case "12": a = "C"

            Case "13": a = "D"

            Case "14": a = "E"

            Case "15": a = "F"

        End Select

        DEC_to_HEX = a & DEC_to_HEX

        Dec = Dec \ 16

    Loop

End Function


' 用途:将十进制转化为八进制

' 输入:Dec(十进制数)

' 输入数据类型:Long

' 输出:DEC_to_OCT(八进制数)

' 输出数据类型:String

' 输入的最大数为2147483647,输出最大数为17777777777

Public Function DEC_to_OCT(Dec As Long) As String

    DEC_to_OCT = ""

    Do While Dec > 0

        DEC_to_OCT = Dec Mod 8 & DEC_to_OCT

        Dec = Dec \ 8

    Loop

End Function


' 用途:将八进制转化为十进制

' 输入:Oct(八进制数)

' 输入数据类型:String

' 输出:OCT_to_DEC(十进制数)

' 输出数据类型:Long

' 输入的最大数为17777777777,输出的最大数为2147483647

Public Function OCT_to_DEC(ByVal Oct As String) As Long

    Dim i As Long

    Dim B As Long

    

    For i = 1 To Len(Oct)

        Select Case Mid(Oct, Len(Oct) - i + 1, 1)

            Case "0": B = B + 8 ^ (i - 1) * 0

            Case "1": B = B + 8 ^ (i - 1) * 1

            Case "2": B = B + 8 ^ (i - 1) * 2

            Case "3": B = B + 8 ^ (i - 1) * 3

            Case "4": B = B + 8 ^ (i - 1) * 4

            Case "5": B = B + 8 ^ (i - 1) * 5

            Case "6": B = B + 8 ^ (i - 1) * 6

            Case "7": B = B + 8 ^ (i - 1) * 7

        End Select

    Next i

    OCT_to_DEC = B

End Function


' 用途:将二进制转化为八进制

' 输入:Bin(二进制数)

' 输入数据类型:String

' 输出:BIN_to_OCT(八进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function BIN_to_OCT(ByVal Bin As String) As String

    Dim i As Long

    Dim H As String

    If Len(Bin) Mod 3 <> 0 Then

        Bin = String(3 - Len(Bin) Mod 3, "0") & Bin

    End If

    

    For i = 1 To Len(Bin) Step 3

        Select Case Mid(Bin, i, 3)

            Case "000": H = H & "0"

            Case "001": H = H & "1"

            Case "010": H = H & "2"

            Case "011": H = H & "3"

            Case "100": H = H & "4"

            Case "101": H = H & "5"

            Case "110": H = H & "6"

            Case "111": H = H & "7"

        End Select

    Next i

    While Left(H, 1) = "0"

        H = Right(H, Len(H) - 1)

    Wend

    BIN_to_OCT = H

End Function


' 用途:将八进制转化为二进制

' 输入:Oct(八进制数)

' 输入数据类型:String

' 输出:OCT_to_BIN(二进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function OCT_to_BIN(ByVal Oct As String) As String

    Dim i As Long

    Dim B As String

    

    For i = 1 To Len(Oct)

        Select Case Mid(Oct, i, 1)

            Case "0": B = B & "000"

            Case "1": B = B & "001"

            Case "2": B = B & "010"

            Case "3": B = B & "011"

            Case "4": B = B & "100"

            Case "5": B = B & "101"

            Case "6": B = B & "110"

            Case "7": B = B & "111"

        End Select

    Next i

    While Left(B, 1) = "0"

        B = Right(B, Len(B) - 1)

    Wend

    OCT_to_BIN = B

End Function


' 用途:将八进制转化为十六进制

' 输入:Oct(八进制数)

' 输入数据类型:String

' 输出:OCT_to_HEX(十六进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function OCT_to_HEX(ByVal Oct As String) As String

    Dim Bin As String

    Bin = OCT_to_BIN(Oct)

    OCT_to_HEX = BIN_to_HEX(Bin)

End Function


' 用途:将十六进制转化为八进制

' 输入:Hex(十六进制数)

' 输入数据类型:String

' 输出:HEX_to_OCT(八进制数)

' 输出数据类型:String

' 输入的最大数为2147483647个字符

Public Function HEX_to_OCT(ByVal Hex As String) As String

    Dim Bin As String

    Hex = UCase(Hex)

    Bin = HEX_to_BIN(Hex)

    HEX_to_OCT = BIN_to_OCT(Bin)

End Function



'VB自带函数:

'十进制转八进制:Oct(num)

'十六进制转八进制:oct("&H" & num)

'十进制转十六进制:hex(num)

'八进制转十六进制:hex("&O" & num)


'十六进制转换为十进制

Dim str As String                     

str = Text2.Text

Text10.Text = CLng("&H" & str)