二進制、八進制、十進制、十六進制轉換函數

    ''' <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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章