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