PHP hexdec() 函数

定义和用法

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

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

语法

hexdec(string $hex_string): int|float
参数 描述
hex_string 必需。规定要转换的十六进制字符串。
字符串中的十六进制数字可以包含可选的 0x 前缀,也可以不含。

返回值

返回 hex_string 的十进制值。由于 PHP 的整数类型是有符号的,很大的十六进制数可能会作为浮点数返回。

PHP 版本

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

示例

示例 1:基本用法

<?php
echo hexdec("a") . "<br>";      // 10
echo hexdec("f") . "<br>";      // 15
echo hexdec("10") . "<br>";     // 16
echo hexdec("ff") . "<br>";     // 255
echo hexdec("0xff") . "<br>";   // 255 (0x前缀可选)
?>

输出:

10
15
16
255
255

示例 2:处理大数

<?php
$large_hex = "7fffffffffffffff"; // 64位最大整数的十六进制
$result = hexdec($large_hex);
echo "hexdec('$large_hex') = $result (类型: " . gettype($result) . ")";
?>

输出(64位系统):

hexdec('7fffffffffffffff') = 9.2233720368548E+18 (类型: double)

示例 3:实际应用 - HTML颜色值解析

<?php
// 将十六进制颜色代码解析为RGB分量
function hexToRgb($hex) {
    $hex = ltrim($hex, '#');
    if (strlen($hex) == 3) {
        $r = hexdec(str_repeat($hex[0], 2));
        $g = hexdec(str_repeat($hex[1], 2));
        $b = hexdec(str_repeat($hex[2], 2));
    } else {
        $r = hexdec(substr($hex, 0, 2));
        $g = hexdec(substr($hex, 2, 2));
        $b = hexdec(substr($hex, 4, 2));
    }
    return [$r, $g, $b];
}

$color = "#FF8000";
list($r, $g, $b) = hexToRgb($color);
echo "颜色 $color 的RGB值为: R=$r, G=$g, B=$b";
?>

输出:

颜色 #FF8000 的RGB值为: R=255, G=128, B=0

相关函数

注意事项

重要:
  • hexdec() 会忽略十六进制字符串中任何非十六进制字符(除了可选的 0x 前缀),但会发出一个 E_WARNING 警告(自 PHP 8.0 起)。
  • 由于 PHP 的整数类型是有符号的,如果转换结果超出 PHP 整数的最大值(在 32 位系统上约为 2147483647,在 64 位系统上约为 9.22e18),则会返回一个浮点数。
  • 该函数不识别 "0x" 前缀之外的格式,如 "0X" 也是可以识别的。
  • 传入空字符串会导致返回 0(并可能产生警告)。