宝峰科技

 找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 5534|回复: 0

[VB成品源码] VB 十进制,八进制,十六进制,二进制相互转换大全

[复制链接]
  • TA的每日心情
    开心
    2024-12-9 18:45
  • 签到天数: 124 天

    [LV.7]常住居民III

    admin 发表于 2010-12-25 17:10:46 | 显示全部楼层 |阅读模式

    欢迎您注册加入!这里有您将更精采!

    您需要 登录 才可以下载或查看,没有账号?注册

    x
    [Visual Basic] 纯文本查看 复制代码
    '' 用途:将十进制转化为二进制
    '' 输入: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)
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2025-5-7 06:29 , File On Powered by Discuz! X3.49

    快速回复 返回顶部 返回列表