在 PHP 编程中,经常会遇到数值在不同进制之间转换的需求,特别是十进制和十六进制之间的转换。PHP 提供了两个非常方便的内置函数 hexdec() 和 dechex(),分别用于将十六进制数转换为十进制数和将十进制数转换为十六进制数。
hexdec() 函数接受一个十六进制字符串作为参数,并返回对应的十进制整数。使用时,只需将包含十六进制数的字符串传入即可。
<?php
$hex = "1A3F";
$decimal = hexdec($hex);
echo "十六进制数 {$hex} 转换为十进制是: {$decimal}";
?>
输出:
十六进制数 1A3F 转换为十进制是: 6719
dechex() 函数接受一个十进制整数作为参数,并返回对应的十六进制字符串。
<?php
$decimal = 6719;
$hex = dechex($decimal);
echo "十进制数 {$decimal} 转换为十六进制是: {$hex}";
?>
输出:
十进制数 6719 转换为十六进制是: 1a3f
注意返回的十六进制字符串默认是小写,如果需要大写,可以结合 strtoupper() 函数:
<?php
$hex = strtoupper(dechex($decimal));
echo "大写十六进制: {$hex}";
?>
输出:
大写十六进制: 1A3F
假设有一个简单的网页表单,用户输入十六进制数,提交后显示对应的十进制数,反之亦然。
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!empty($_POST['hex'])) {
$hex = $_POST['hex'];
$decimal = hexdec($hex);
echo "<p>十六进制 {$hex} 转换为十进制是 {$decimal}</p>";
}
if (!empty($_POST['decimal'])) {
$decimal = (int)$_POST['decimal'];
$hex = dechex($decimal);
echo "<p>十进制 {$decimal} 转换为十六进制是 {$hex}</p>";
}
}
?>
<form method="post" action="https://gitbox.net/convert.php">
<label>十六进制: <input type="text" name="hex"></label><br>
<label>十进制: <input type="text" name="decimal"></label><br>
<input type="submit" value="转换">
</form>
在这个例子中,用户可以通过表单输入任意十六进制或十进制数,提交后后台会进行对应转换并显示结果。