进制转换看这里

实用的进制转换

我这里有进制之间的互转代码,需要的朋友可以看看,有不足之处请指正哈!
如下图所见,你值得拥有!!
在这里插入图片描述


Imports System
Imports System.Text

Public Class Form1

    Private _left As String
    Private _right As String

    Private Property Left(b As String, p2 As Integer) As String
        Get
            Return _left
        End Get
        Set(value As String)
            _left = value
        End Set
    End Property

    Private Property Right(b As String, p2 As Integer) As String
        Get
            Return _right
        End Get
        Set(value As String)
            _right = value
        End Set
    End Property



    '二进制转十进制
    Public Function BtoD(ByVal vBstr As String) As String
        
        Dim vLen As Integer  '串长
        Dim vDec As Single = 0  '结果
        Dim vI As Long       '位数
        Dim vTmp As String   '中间值
        Dim vN As Long       '判断是否输入1 or 0

        vLen = Len(vBstr)
        For vI = 1 To vLen
            vTmp = Mid(vBstr, vI, 1) '取出当前位
            vN = Val(vTmp)
            If vN < 2 And vN > -1 Then

            Else
                BtoD = "erro"
                Exit Function
            End If
        Next
        Dim aa As String = CStr(Convert.ToInt32(vBstr, 2))
        BtoD = aa
    End Function

    '十进制转二进制
    Public Function DtoB(ByVal Dec As Long) As String
        DtoB = ""
        Try
            Do While Dec > 0
                DtoB = Dec Mod 2 & DtoB
                Dec = Dec \ 2
            Loop
        Catch ex As Exception

        End Try

    End Function

    ' 将十进制转化为八进制
    Public Function DtoO(ByVal Dec As Long) As String
        DtoO = ""
        If Dec >= 0 Then
            Do While Dec > 0
                DtoO = Dec Mod 8 & DtoO
                Dec = Dec \ 8
            Loop
        Else
            DtoO = "请输入正整数"
        End If

    End Function

    '将八进制转化为十进制
    Public Function OtoD(ByVal Oct As String) As Long
        Dim i As Long
        Dim value As Long
        If Oct >= 0 Then
            For i = 1 To Len(Oct)
                Select Case Mid(Oct, Len(Oct) - i + 1, 1)
                    Case "0" : value = value + 8 ^ (i - 1) * 0
                    Case "1" : value = value + 8 ^ (i - 1) * 1
                    Case "2" : value = value + 8 ^ (i - 1) * 2
                    Case "3" : value = value + 8 ^ (i - 1) * 3
                    Case "4" : value = value + 8 ^ (i - 1) * 4
                    Case "5" : value = value + 8 ^ (i - 1) * 5
                    Case "6" : value = value + 8 ^ (i - 1) * 6
                    Case "7" : value = value + 8 ^ (i - 1) * 7
                    Case Else : value = -1
                End Select
            Next i
        End If
        OtoD = value
    End Function

    '将十进制转化为十六进制
    Public Function DtoH(Dec As Long) As String
        Dim a As String
        DtoH = ""
        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"
                    'Case Else : a = "erro"
            End Select
            DtoH = a & DtoH
            Dec = Dec \ 16
        Loop
    End Function

    '将十六进制转化为十进制
    Public Function HtoD(ByVal Hex As String) As String
        Dim i As Long
        Dim value As Long

        Hex = UCase(Hex)
        For i = 1 To Len(Hex)
            Select Case Mid(Hex, Len(Hex) - i + 1, 1)
                Case "0" : value = value + 16 ^ (i - 1) * 0
                Case "1" : value = value + 16 ^ (i - 1) * 1
                Case "2" : value = value + 16 ^ (i - 1) * 2
                Case "3" : value = value + 16 ^ (i - 1) * 3
                Case "4" : value = value + 16 ^ (i - 1) * 4
                Case "5" : value = value + 16 ^ (i - 1) * 5
                Case "6" : value = value + 16 ^ (i - 1) * 6
                Case "7" : value = value + 16 ^ (i - 1) * 7
                Case "8" : value = value + 16 ^ (i - 1) * 8
                Case "9" : value = value + 16 ^ (i - 1) * 9
                Case "A" : value = value + 16 ^ (i - 1) * 10
                Case "B" : value = value + 16 ^ (i - 1) * 11
                Case "C" : value = value + 16 ^ (i - 1) * 12
                Case "D" : value = value + 16 ^ (i - 1) * 13
                Case "E" : value = value + 16 ^ (i - 1) * 14
                Case "F" : value = value + 16 ^ (i - 1) * 15
                Case Else : value = -1
            End Select
        Next i
        HtoD = Str(value)
    End Function

    '将十六进制转化为二进制
    Public Function HtoB(ByVal Hex As String) As String
        Dim i As Long
        Dim value As String

        Hex = UCase(Hex)
        For i = 1 To Len(Hex)
            Select Case Mid(Hex, i, 1)
                Case "0" : value = value & "0000"
                Case "1" : value = value & "0001"
                Case "2" : value = value & "0010"
                Case "3" : value = value & "0011"
                Case "4" : value = value & "0100"
                Case "5" : value = value & "0101"
                Case "6" : value = value & "0110"
                Case "7" : value = value & "0111"
                Case "8" : value = value & "1000"
                Case "9" : value = value & "1001"
                Case "A" : value = value & "1010"
                Case "B" : value = value & "1011"
                Case "C" : value = value & "1100"
                Case "D" : value = value & "1101"
                Case "E" : value = value & "1110"
                Case "F" : value = value & "1111"
                Case Else : value = "erro"
            End Select
        Next i
        While Left(value, 1) = "0"
            value = Right(value, Len(value) - 1)
        End While
        HtoB = value
    End Function

    '将二进制转化为十六进制
    Public Function BtoH(ByVal Bin As String) As String
        Dim i As Long
        Dim H As String = ""
        If Len(Bin) Mod 4 <> 0 Then
            Bin = Strget(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"
                Case Else
                    H = "erro"
            End Select
        Next i
        While Left(H, 1) = "0"
            H = Right(H, Len(H) - 1)
        End While
        BtoH = H
    End Function

    Public Function Strget(ByVal nub As Long, ByVal str0 As String) As String
        Dim i As Long
        Dim str1 As String = ""
        For i = 0 To nub - 1 Step 1
            str1 = str1 & str0
        Next
        Strget = str1
    End Function

    '将二进制转化为八进制
    Public Function BtoO(ByVal Bin As String) As String
        Dim i As Long
        Dim H As String = ""
        If Len(Bin) Mod 3 <> 0 Then
            Bin = Strget(3 - Len(Bin) Mod 3, "0") & Bin  '位数用0补齐
        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"
                Case Else
                    H = "erro"
            End Select
        Next i
        While Left(H, 1) = "0"
            H = Right(H, Len(H) - 1)
        End While
        BtoO = H
    End Function

    '将八进制转化为二进制
    Public Function OtoB(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"
                Case Else : b = "erro"
            End Select
        Next i
        While Left(b, 1) = "0"
            b = Right(b, Len(b) - 1)
        End While
        OtoB = b
    End Function

    '将八进制转化为十六进制
    Public Function OtoH(ByVal Oct As String) As String
        Dim Bin As String
        Bin = OtoB(Oct)
        OtoH = BtoH(Bin)
    End Function

    '将十六进制转化为八进制
    Public Function HtoO(ByVal Hex As String) As String
        Dim Bin As String
        Hex = UCase(Hex)
        Bin = HtoB(Hex)
        HtoO = BtoO(Bin)
    End Function


    '十六进制转ASC字符
    Function HtoA(InputData As String) As String
        Dim mydata
        mydata = Chr(Val("&H" & InputData))
        HtoA = mydata
        Exit Function
    End Function


    'ASCII字符串转16进制字符串
    Public Function AtoH(ByVal str As String) As String
        Dim strlen As Integer
        Dim i As Integer
        Dim mystr As String
        mystr = ""
        strlen = Len(str)
        For i = 1 To strlen Step 1
            mystr = mystr + Hex$(Asc(Mid(str, i, 1)))
        Next i
        AtoH = mystr
    End Function

    'ASCII码转BCD-8421
    'Public Function A2B(str As String) As Object
    '    Dim a() As Byte, s As String
    '    s = str
    '    a = StrConv(s, vbFromUnicode) '字符串转换为byte型 'a 是byte数组,你可以在程序中调用 ,但不能在textbox中显示。
    '    A2B = a
    'End Function


    '二进制流转ASCII码值      ::  二进制转为十进制再转为ascii字符,再转为ascii码值
    Public Function BtoA(ByVal unicodeString As String) As String
        Dim btodString As String = BtoD(unicodeString)
        Dim asciiString As String
        asciiString = Chr(btodString) '转为ascii字符
        BtoA = Asc(asciiString) '转为ascii值 

    End Function



    Public SelectThings As String '选择选项全局变量


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim vbS As String = TextBox1.Text
        'MsgBox(BtoD(vbS))'二进制转十进制
        'MsgBox(DtoB(vbS)) '十进制转二进制

        'If SelectThings = "二进制转十进制" Then
        '    'MsgBox("转换成功")
        '    TextBox2.Text = BtoD(vbS)
        'End If

        Select Case SelectThings
            Case "二进制转八进制" : TextBox2.Text = BtoO(vbS)
            Case "二进制转十进制" : TextBox2.Text = BtoD(vbS)
            Case "二进制转十六进制" : TextBox2.Text = BtoH(vbS)
            Case "二进制流转ASCII码" : TextBox2.Text = BtoA(vbS)
            Case "八进制转二进制" : TextBox2.Text = OtoB(vbS)
            Case "八进制转十进制" : TextBox2.Text = OtoD(vbS)
            Case "八进制转十六进制" : TextBox2.Text = OtoH(vbS)
            Case "十进制转二进制" : TextBox2.Text = DtoB(vbS)
            Case "十进制转八进制" : TextBox2.Text = DtoO(vbS)
            Case "十进制转十六进制" : TextBox2.Text = DtoH(vbS)
            Case "十六进制转二进制" : TextBox2.Text = HtoB(vbS)
            Case "十六进制转八进制" : TextBox2.Text = HtoO(vbS)
            Case "十六进制转十进制" : TextBox2.Text = HtoD(vbS)
            Case "ASCII字符串转16进制字符串" : TextBox2.Text = AtoH(vbS)
            Case "十六进制转ASC字符" : TextBox2.Text = HtoA(vbS)
        End Select
        'MsgBox(BtoO(vbS))
    End Sub



    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

        Dim i As Integer
        i = ComboBox1.SelectedIndex
        SelectThings = ComboBox1.Items(i)

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ComboBox1.Items.Add("二进制转八进制")
        ComboBox1.Items.Add("二进制流转ASCII码")
        ComboBox1.Items.Add("二进制转十进制")
        ComboBox1.Items.Add("二进制转十六进制")
        ComboBox1.Items.Add("八进制转二进制")
        ComboBox1.Items.Add("八进制转十进制")
        ComboBox1.Items.Add("八进制转十六进制")
        ComboBox1.Items.Add("十进制转二进制")
        ComboBox1.Items.Add("十进制转八进制")
        ComboBox1.Items.Add("十进制转十六进制")
        ComboBox1.Items.Add("十六进制转二进制")
        ComboBox1.Items.Add("十六进制转八进制")
        ComboBox1.Items.Add("十六进制转十进制")
        ComboBox1.Items.Add("ASCII字符串转16进制字符串")
        ComboBox1.Items.Add("十六进制转ASC字符")

    End Sub
End Class

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值