二进制、八进制、十进制、十六进制转换函数

本文提供了几个实用的函数来实现不同进制数之间的转换,包括二进制到十六进制、二进制到十进制、十六进制到二进制以及十六进制到十进制等。这些函数可用于编程中处理各种进制的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    ''' <summary>
    ''' 二进制数转换为十六进制数
    ''' </summary>
    ''' <param name="X">必选。二进制字符串</param>
    ''' <returns>十六进制字符串</returns>
    ''' <remarks>2009-1-18 16:9:18 Sunday</remarks>
    Public Function c2to16(ByVal X As String) As String
        Try
            Dim re As String = ""
            Dim strT As String = Strings.StrReverse(X)
            For i As Integer = 1 To strT.Length Step 4
                re &= Hex(c2to10(Strings.StrReverse(Mid(strT, i, 4))))
            Next
            Return Strings.StrReverse(re)
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

 

    ''' <summary>
    ''' 二进制数转换为十进制数
    ''' </summary>
    ''' <param name="X">必选。二进制字符串</param>
    ''' <returns>十进制整数</returns>
    ''' <remarks>2009-1-18 16:9:50 Sunday</remarks>
    Public Function c2to10(ByVal X As String) As Integer
        Try
            Dim re As Integer = 0
            If X = "0" Then Return re

            For i As Integer = 0 To X.Length - 1
                If Mid(X, X.Length - i, 1) = "1" Then re += (2 ^ i)
            Next
            Return re
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

 

    ''' <summary>
    ''' 十六进制数转换为二进制数
    ''' </summary>
    ''' <param name="X">必选。十六进制字符串</param>
    ''' <returns>二进制字符串</returns>
    ''' <remarks>2009-1-18 16:10:12 Sunday</remarks>
    Public Function c16to2(ByVal X As String) As String
        '十六进制数转换为二进制数
        Try
            Dim re As String = ""
            Dim TempStr As String = ""
            For i As Integer = 1 To X.Length
                TempStr = c10to2(CInt("&h" & Mid(X, i, 1)))
                Do While TempStr.Length < 4
                    TempStr = "0" & TempStr
                Loop
                re &= TempStr
            Next
            Return re
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

 

    ''' <summary>
    ''' 十六进制数转换为十进制数
    ''' </summary>
    ''' <param name="X">必选。十六进制字符串</param>
    ''' <returns>十进制整数</returns>
    ''' <remarks>2009-1-18 16:16:05 Sunday</remarks>
    Public Function c16to10(ByVal X As String) As Integer
        Return c2to10(c16to2(X))
    End Function

 

    ''' <summary>
    ''' 将十进制数转换为二进制数
    ''' </summary>
    ''' <param name="X">必选。十进制整数</param>
    ''' <returns>二进制字符串</returns>
    ''' <remarks>2009-1-18 16:10:47 Sunday</remarks>
    Public Function c10to2(ByVal X As Integer) As String
        Try
            Dim re As String = ""
            Dim mysign As Integer = Math.Sign(X)        '小于零-1,等于零0,大于零1
            X = Math.Abs(X)
            Dim DigS As Integer = 1
            Do
                If X < 2 ^ DigS Then
                    Exit Do
                Else
                    DigS = DigS + 1
                End If
            Loop
            Dim tempnum As Integer = X

            For i As Integer = DigS To 1 Step -1
                If tempnum >= 2 ^ (i - 1) Then
                    tempnum = tempnum - 2 ^ (i - 1)
                    re &= "1"
                Else
                    re &= "0"
                End If
            Next

            If mysign = -1 Then re = "-" & re
            Return re
        Catch ex As Exception
            Return Nothing
        End Try
    End Function

 

    ''' <summary>
    ''' 将十进制数转换为十六进制数
    ''' </summary>
    ''' <param name="X">必选。十进制整数</param>
    ''' <returns>十六进制字符串</returns>
    ''' <remarks>2009-1-18 16:14:02 Sunday</remarks>
    Public Function c10to16(ByVal X As Integer) As String
        Return c2to16(c10to2(X))
    End Function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值