Convert Hexadecimal numbers

Convert Hexadecimal numbers

While Visual Basic offers the Hex$ function that converts a decimal value into its hexadecimal equivalent number, it seems that the inverse function is missing. Not true. Try out this one-liner:

Function HexToDec(HexValue As String) As Long    HexToDec = Val("&H" & HexValue)End Function

UPDATE The code in the original tip always tries to return an Integer value, which means that, for example, “FFFF” is converted to -1 instead of 65,535. The following new versions fixes this behavior, while still giving you the capability to convert to an integer:

Function HexToDec(HexValue As String, Optional ToInteger As Boolean) As Long    If ToInteger Then        ' convert to an integer value, if possible.         ' Use CInt() if you want to *always* convert to an Integer        HexToDec = Val("&H" & HexValue)    Else        ' always convert to a Long. You can also use the CLng() function.        HexToDec = Val("&H" & HexValue & "&")    End IfEnd Function

Thanks to Joe Hartman for spotting the problem with the original routine and suggesting the solution.


Share the Post: