KNOWLEDGE BASE
Log In    |    Knowledge Base    |    4D Home
Tech Tip: Converting Hexadecimal to Decimal in native 4D code
PRODUCT: 4D | VERSION: 15.3 | PLATFORM: Mac & Win
Published On: October 28, 2016

The following method converts a hexadecimal (string) to a decimal (long integer) value using native 4D code:

// ----------------------------------------------------
// Method: UTIL_HEXTODEC
// Example: $var_longint:=UTIL_HEXTODEC($var_hex_text)
// Description: Converts a hexadecimal string ("4D") to a longint (77)
// Parameters:
// $0 := Long Int
// $1 := Text
// ----------------------------------------------------

C_LONGINT($0;$location;$length;$total;$a;$thisValue)
C_TEXT($1;$hex)
If (Count parameters=1)
   $hex:=$1
   $length:=Length($hex)
   $total:=0
   For ($a;1;$length)
      Case of
         : ($hex[[$a]]="A")
         $thisValue:=10
         : ($hex[[$a]]="B")
         $thisValue:=11
         : ($hex[[$a]]="C")
         $thisValue:=12
         : ($hex[[$a]]="D")
         $thisValue:=13
         : ($hex[[$a]]="E")
         $thisValue:=14
         : ($hex[[$a]]="F")
         $thisValue:=15
      Else
         $thisValue:=Num($hex[[$a]])
      End case
      $location:=$length-$a
      $total:=$total+($thisValue*(16^$location))
   End for
End if
$0:=$total


If the code above is saved as UTIL_HEXTODEC it could be used like this to convert the hexadecaimal value of "4D" to the decimal value of 77:
ALERT(String(UTIL_HEXTODEC ("4D"))) // 77


In the following example the UTIL_HEXTODEC project method is used to convert the hexadecimal value of DECAF to the decimal value of 912,559
ALERT(String(UTIL_HEXTODEC ("DECAF"))) // 912559


The limitation of this project method is 7FFFFFFF or 2,147,483,647 which is the max value for a signed long integer.

If this project method were used to convert a hexadecimal value larger than 7FFFFFFFF the returned value will be incorrect due to overflow; for example, the hexadecimal value of 80000000 converts to -2,147,483,648