PHP dechex() Function

PHP

PHP dechex() - Decimal to Hexadecimal

Learn PHP dechex() function. Convert a decimal number to a hexadecimal string easily and efficiently. Whether you are working with color codes, memory addresses, or any hex conversion tasks, this tutorial will help you master dechex() step-by-step.

Introduction

In PHP, converting numbers between different numeral systems is common in applications like web development, data formatting, and low-level programming. The dechex() function converts a decimal number (base 10) to a hexadecimal number (base 16), returning the hex value as a string. This is particularly useful when handling color codes in web design or working with low-level data addresses.

Prerequisites

  • Basic understanding of PHP syntax and functions.
  • Familiarity with decimal and hexadecimal numeral systems.
  • PHP installed on your local environment or access to a web server with PHP 5.0+.

Setup Steps

  1. Install PHP if not already installed. You can download it from php.net.
  2. Open your favorite code editor (VSCode, Sublime Text, or similar).
  3. Create a new PHP file named dechex-demo.php.
  4. Write and test PHP code using the examples provided below.

Understanding PHP dechex() Function

dechex() takes an integer decimal number as input and returns its hexadecimal string representation.

string dechex ( int $number )

Parameters:

  • $number (int): Decimal number to convert.

Returns: A string representing the hexadecimal value of the decimal input.

Examples

Example 1: Basic decimal to hex conversion

<?php
$decimal = 255;
$hex = dechex($decimal);
echo "Decimal: $decimal converts to Hexadecimal: $hex"; 
// Output: Decimal: 255 converts to Hexadecimal: ff
?>

Example 2: Converting multiple decimal values

<?php
$numbers = [10, 16, 31, 255, 4095];
foreach ($numbers as $num) {
    echo "Decimal: $num --> Hex: " . dechex($num) . "<br>";
}
/* Output:
Decimal: 10 --> Hex: a
Decimal: 16 --> Hex: 10
Decimal: 31 --> Hex: 1f
Decimal: 255 --> Hex: ff
Decimal: 4095 --> Hex: fff
*/
?>

Example 3: Zero and negative decimal conversion

<?php
echo dechex(0) . "<br>";      // Output: 0
echo dechex(-15) . "<br>";   // Output: fffffff1 (32-bit 2's complement)
?>

Note: Negative integers are converted to their 32-bit signed 2's complement hexadecimal representation.

Example 4: Using dechex() for CSS Color Codes

<?php
$red = 255;
$green = 99;
$blue = 71;

$hexColor = '#' . str_pad(dechex($red), 2, "0", STR_PAD_LEFT)
                . str_pad(dechex($green), 2, "0", STR_PAD_LEFT)
                . str_pad(dechex($blue), 2, "0", STR_PAD_LEFT);
echo "Hex color code: $hexColor"; // Output: #ff6347 (Tomato color)
?>

Best Practices

  • Always ensure the input to dechex() is an integer. Use intval() or cast if needed.
  • Use str_pad() to maintain fixed length hex strings, especially useful for color codes.
  • Keep in mind PHP returns lowercase hex characters. Use strtoupper() if uppercase hex format is required.
  • Understand the behavior with negative numbersโ€”sometimes it produces 2's complement hex values.

Common Mistakes

  • Passing non-integer or floating point values without casting, which can yield unexpected results.
  • Forgetting to pad the hexadecimal string for applications like colors where 2-digit hex numbers are needed.
  • Not handling negative inputs properly.
  • Confusing dechex() output type; it always returns a string, not a number.

Interview Questions

Junior-level Questions

  • Q1: What does the PHP dechex() function do?
    A: Converts a decimal integer to a hexadecimal string.
  • Q2: What type of value does dechex() return?
    A: A string representing the hexadecimal value.
  • Q3: How do you convert decimal 16 to hexadecimal using dechex()?
    A: Call dechex(16) which returns "10".
  • Q4: What will dechex(0) return?
    A: The string "0".
  • Q5: Which numeral systems does dechex() convert between?
    A: From decimal (base 10) to hexadecimal (base 16).

Mid-level Questions

  • Q1: How does dechex() handle negative integers?
    A: It returns the 32-bit two's complement hexadecimal representation as a string.
  • Q2: Why might you use str_pad() alongside dechex() when working with colors?
    A: To ensure each color component has two hex digits (e.g., "0a" instead of "a").
  • Q3: How do you convert the output of dechex() to uppercase?
    A: Use strtoupper() on the returned string.
  • Q4: Can dechex() handle floating-point numbers directly?
    A: No, it expects an integer. Floats should be cast or rounded before use.
  • Q5: How would you convert a decimal number to hex and prefix with "0x"?
    A: Concatenate "0x" . dechex($number).

Senior-level Questions

  • Q1: Describe how PHP internally handles negative numbers passed to dechex().
    A: Negative numbers are converted using 32-bit two's complement representation, producing a hex string corresponding to the binary representation.
  • Q2: How would you ensure type safety when converting user input with dechex()?
    A: Use explicit casting to integer and validate input to avoid errors or unexpected results.
  • Q3: Explain a real-world scenario where dechex() is crucial in PHP applications.
    A: Generating CSS hex color codes dynamically by converting RGB decimal values to hex strings.
  • Q4: How can using dechex() improve performance compared to manual decimal-to-hex conversion in PHP?
    A: It uses optimized internal C implementations, reducing overhead and minimizing bugs.
  • Q5: How can you handle conversions of very large decimal numbers exceeding 32-bit range with dechex()?
    A: Since dechex() only supports integers, use arbitrary precision libraries like GMP or BCMath for big numbers.

FAQ

Can dechex() convert negative decimal numbers?
Yes, but it returns the 32-bit two's complement hexadecimal representation of the negative number.
What if I pass a floating-point number to dechex()?
PHP will implicitly convert it to integer by truncating the decimal part. It's safer to cast explicitly before conversion.
Does dechex() return uppercase or lowercase hex?
It returns lowercase hexadecimal letters by default. Use strtoupper() if uppercase is needed.
How to convert decimal numbers to hex color codes using dechex()?
Convert each RGB decimal component with dechex(), pad the result to two digits and concatenate them with a # prefix.
Is dechex() slower than manual conversion?
No, it's optimized internally and recommended for converting decimal to hex in PHP.

Conclusion

The PHP dechex() function is an essential tool in any PHP developerโ€™s kit for converting decimal integers to hexadecimal strings. Whether you are working on color rendering, system programming, or data formatting, mastering dechex() simplifies hex conversions with built-in efficiency and clarity. Follow best practices, be mindful of input types, and handle edge cases like negative numbers to use this function effectively.