hexdec(string $hex_string): int|float
| 参数 | 描述 |
|---|---|
hex_string |
必需。规定要转换的十六进制字符串。 字符串中的十六进制数字可以包含可选的 0x 前缀,也可以不含。 |
返回 hex_string 的十进制值。由于 PHP 的整数类型是有符号的,很大的十六进制数可能会作为浮点数返回。
<?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
<?php
$large_hex = "7fffffffffffffff"; // 64位最大整数的十六进制
$result = hexdec($large_hex);
echo "hexdec('$large_hex') = $result (类型: " . gettype($result) . ")";
?>
输出(64位系统):
hexdec('7fffffffffffffff') = 9.2233720368548E+18 (类型: double)
<?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 起)。