' convert from decimal to hexadecimal
' if you pass the Digits argument, the result is truncated to that number of
' digits
'
' you should always specify Digits if passing negative values
Function Hex(ByVal value As Long, Optional ByVal digits As Short = -1) As String
' convert to base-16
Dim res As String = Convert.ToString(value, 16).ToUpper()
' truncate or extend the number
If digits > 0 Then
If digits < res.Length Then
' truncate the result
res = res.Substring(res.Length - digits)
ElseIf digits > res.Length Then
' we must extend the result to the left
If value >= 0 Then
' extend with zeroes if positive
res = res.PadLeft(digits, "0"c)
Else
' extend with "F"s if negative
res = res.PadLeft(digits, "F"c)
End If
End If
End If
' return to caller
Return res
End Function