Function Hex2Bin(HexValue As String) As String '16进制转2进制
Const BinTbl = "0000000100100011010001010110011110001001101010111100110111101111"
Dim X As Integer
Dim Work1 As String
Work1 = ""
For X = 1 To Len(HexValue)
Work1 = Work1 + Mid(BinTbl, Val("&h" + Mid(HexValue, X, 1)) * 4 + 1, 4)
Next
Hex2Bin = Work1
End Function
Public Function BIN_to_HEX(ByVal Bin As String) As String '2进制转16进制
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
Public Function Hex2Dec(InputData As String) As Double '16进制转10进制
Dim I As Integer
Dim DecOut As Double
Dim Lenhex As Integer
Dim HexStep As Double
DecOut = 0
InputData = UCase(InputData)
Lenhex = Len(InputData)
For I = 1 To Lenhex
If IsNumeric(Mid(InputData, I, 1)) Then
GoTo NumOk
ElseIf Mid(InputData, I, 1) = "A" Then
GoTo NumOk
ElseIf Mid(InputData, I, 1) = "B" Then
GoTo NumOk
ElseIf Mid(InputData, I, 1) = "C" Then
GoTo NumOk
ElseIf Mid(InputData, I, 1) = "D" Then
GoTo NumOk
ElseIf Mid(InputData, I, 1) = "E" Then
GoTo NumOk
ElseIf Mid(InputData, I, 1) = "F" Then
GoTo NumOk
Else
Exit Function
End If
NumOk:
Next I
HexStep = 0
For I = Lenhex To 1 Step -1
HexStep = HexStep * 16
If HexStep = 0 Then
HexStep = 1
End If
If Mid(InputData, I, 1) = "0" Then
DecOut = DecOut + (0 * HexStep)
ElseIf Mid(InputData, I, 1) = "1" Then
DecOut = DecOut + (1 * HexStep)
ElseIf Mid(InputData, I, 1) = "2" Then
DecOut = DecOut + (2 * HexStep)
ElseIf Mid(InputData, I, 1) = "3" Then
DecOut = DecOut + (3 * HexStep)
ElseIf Mid(InputData, I, 1) = "4" Then
DecOut = DecOut + (4 * HexStep)
ElseIf Mid(InputData, I, 1) = "5" Then
DecOut = DecOut + (5 * HexStep)
ElseIf Mid(InputData, I, 1) = "6" Then
DecOut = DecOut + (6 * HexStep)
ElseIf Mid(InputData, I, 1) = "7" Then
DecOut = DecOut + (7 * HexStep)
ElseIf Mid(InputData, I, 1) = "8" Then
DecOut = DecOut + (8 * HexStep)
ElseIf Mid(InputData, I, 1) = "9" Then
DecOut = DecOut + (9 * HexStep)
ElseIf Mid(InputData, I, 1) = "A" Then
DecOut = DecOut + (10 * HexStep)
ElseIf Mid(InputData, I, 1) = "B" Then
DecOut = DecOut + (11 * HexStep)
ElseIf Mid(InputData, I, 1) = "C" Then
DecOut = DecOut + (12 * HexStep)
ElseIf Mid(InputData, I, 1) = "D" Then
DecOut = DecOut + (13 * HexStep)
ElseIf Mid(InputData, I, 1) = "E" Then
DecOut = DecOut + (14 * HexStep)
ElseIf Mid(InputData, I, 1) = "F" Then
DecOut = DecOut + (15 * HexStep)
Else
End If
Next I
Hex2Dec = DecOut
eds:
End Function