zoukankan      html  css  js  c++  java
  • 十进制,八进制,十六进制,二进制相互转换大全

    轉自:http://blog.programfan.com/article.asp?id=11903

     

    ' 用途:将十进制转化为二进制
    '
     输入:Dec(十进制数)
    '
     输入数据类型:Long
    '
     输出:DEC_to_BIN(二进制数)
    '
     输出数据类型:String
    '
     输入的最大数为2147483647,输出最大数为1111111111111111111111111111111(31个1)
    Public Function DEC_to_BIN(Dec As LongAs 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 StringAs 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 StringAs 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 StringAs 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 StringAs Long
        
    Dim i As Long
        
    Dim B As Long
        
        
    Hex = UCase(Hex)
        
    For i = 1 To Len(Hex
    )
            
    Select Case Mid(HexLen(Hex- i + 11
    )
                
    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 LongAs 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 LongAs 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 StringAs Long
        
    Dim i As Long
        
    Dim B As Long
        
        
    For i = 1 To Len(Oct)
            
    Select Case Mid(OctLen(Oct- i + 11
    )
                
    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 StringAs 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 StringAs 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 StringAs 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 StringAs 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)


    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    kafka学习笔记:知识点整理
    ZooKeeper基本原理
    Channel详解
    redis十-对快照模式分析
    文字两行显示
    vue 脚手架创建新项目时报错 ERROR Failed to get response from http://registry.cnpmjs.org/vue-cli-version
    checkbox 点选后没有被选中,有点击事件,不显示小勾
    git 提示 没有操作权限
    HBuilder X 提示Setting.json格式语法错误
    格式化代码时提示错误
  • 原文地址:https://www.cnblogs.com/Athrun/p/1384499.html
Copyright © 2011-2022 走看看