dechex(int $num): string
| 参数 | 描述 |
|---|---|
num |
必需。规定要转换的十进制整数。 由于 PHP int 是有符号的,负数会按 32 位或 64 位二进制补码处理,导致十六进制表示为对应无符号整数的值。 |
返回包含十进制数 num 的十六进制表示的字符串(使用小写字母 a-f)。
<?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
<?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
<?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。strtoupper()。gmp_strval(gmp_init($num, 10), 16)。