www.pudn.com > ModBusUtility.rar > modConv.bas


Attribute VB_Name = "modConv" 
Option Explicit 
Function Hex2Dec(InputData As String) As Long 
'' 
''  Converts Hexadecimal to Decimal 
'' 
Dim i As Integer 
Dim DecOut As Double 
Dim Lenhex As Integer 
Dim HexStep As Double 
 
 
'' Zeroise the output 
DecOut = 0 
 
''  The length of the input 
'' 
InputData = UCase(InputData) 
Lenhex = Len(InputData) 
 
'' 
''  Check to make sure its a valid Hex Number 
'' 
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 
'  MsgBox "输入数字不是有效的十六进制数字", vbCritical 
  Exit Function 
End If 
 
NumOk: 
Next i 
 
HexStep = 0 
 
'' 
'' 
''  Convert the Number to Decimal 
'' 
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 
   MsgBox "Something is Screwed up, Wahhhhhhhhhhh", vbCritical 
 End If 
 
Next i 
 
Hex2Dec = DecOut 
 
eds: 
End Function