PHP dechex() 函数

定义和用法

dechex() 函数将十进制数转换为十六进制字符串。

提示:如需将十六进制转换为十进制,请使用 hexdec() 函数。

语法

dechex(int $num): string
参数 描述
num 必需。规定要转换的十进制整数。
由于 PHP int 是有符号的,负数会按 32 位或 64 位二进制补码处理,导致十六进制表示为对应无符号整数的值。

返回值

返回包含十进制数 num 的十六进制表示的字符串(使用小写字母 a-f)。

PHP 版本

  • PHP 4+
  • PHP 5+
  • PHP 7+
  • PHP 8+

示例

示例 1:基本用法

<?php
echo dechex(10) . "<br>";   // a
echo dechex(15) . "<br>";   // f
echo dechex(16) . "<br>";   // 10
echo dechex(255) . "<br>";  // ff
?>

输出:

a
f
10
ff

示例 2:处理大数

<?php
$large_num = 2147483647; // 32位最大正整数
echo "32位最大整数: $large_num<br>";
echo "十六进制: " . dechex($large_num) . "<br>";

// 在64位系统上可以处理更大数值
if (PHP_INT_SIZE == 8) {
    $very_large = 9223372036854775807; // 64位最大整数
    echo "64位最大整数: $very_large<br>";
    echo "十六进制: " . dechex($very_large) . "<br>";
}
?>

输出(64位系统):

32位最大整数: 2147483647
十六进制: 7fffffff
64位最大整数: 9223372036854775807
十六进制: 7fffffffffffffff

示例 3:实际应用 - RGB颜色值转换

<?php
// 将RGB颜色值转换为十六进制颜色代码
function rgbToHex($r, $g, $b) {
    $hex = "#";
    $hex .= str_pad(dechex($r), 2, "0", STR_PAD_LEFT);
    $hex .= str_pad(dechex($g), 2, "0", STR_PAD_LEFT);
    $hex .= str_pad(dechex($b), 2, "0", STR_PAD_LEFT);
    return strtoupper($hex);
}

$r = 255; $g = 128; $b = 0;
echo "RGB($r, $g, $b) 对应的十六进制颜色为: " . rgbToHex($r, $g, $b);
?>

输出:

RGB(255, 128, 0) 对应的十六进制颜色为: #FF8000

相关函数

注意事项

重要:
  • dechex() 处理负数时,结果对应的是该负数的二进制补码的十六进制表示(即无符号整数的值)。例如,在32位系统上 dechex(-1) 返回 ffffffff
  • 转换结果使用小写字母 a-f,如果需要大写,可以使用 strtoupper()
  • 如果数字超出 PHP 整数范围,结果将不可靠。对于超大数值,可以考虑使用 GMP 扩展的 gmp_strval(gmp_init($num, 10), 16)
  • 传入非数值类型参数会导致警告(PHP 7+)或 TypeError(PHP 8+)。