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