code: public static function DECTOHEX($x, $places = null)
      {
          $x = Functions::flattenSingleValue($x);
          $places = Functions::flattenSingleValue($places);
  
          if (is_bool($x)) {
              if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) {
                  $x = (int) $x;
              } else {
                  return Functions::VALUE();
              }
          }
          $x = (string) $x;
          if (strlen($x) > preg_match_all('/[-0123456789.]/', $x, $out)) {
              return Functions::VALUE();
          }
          $x = (string) floor($x);
          $r = strtoupper(dechex($x));
          if (strlen($r) == 8) {
              //    Two's Complement
              $r = 'FF' . $r;
          }
  
          return self::nbrConversionFormat($r, $places);
      }
docs: DECTOHEX.
  
  Return a decimal value as hex.
  
  Excel Function:
  DEC2HEX(x[,places])
  
  @category Engineering Functions
  
  @param string $x The decimal integer you want to convert. If number is negative,
  places is ignored and DEC2HEX returns a 10-character (40-bit)
  hexadecimal number in which the most significant bit is the sign
  bit. The remaining 39 bits are magnitude bits. Negative numbers
  are represented using two's-complement notation.
  If number < -549,755,813,888 or if number > 549,755,813,887,
  DEC2HEX returns the #NUM! error value.
  If number is nonnumeric, DEC2HEX returns the #VALUE! error value.
  If DEC2HEX requires more than places characters, it returns the
  #NUM! error value.
  @param int $places The number of characters to use. If places is omitted, DEC2HEX uses
  the minimum number of characters necessary. Places is useful for
  padding the return value with leading 0s (zeros).
  If places is not an integer, it is truncated.
  If places is nonnumeric, DEC2HEX returns the #VALUE! error value.
  If places is zero or negative, DEC2HEX returns the #NUM! error value.
  
  @return string