hexdec 是 PHP 内置函数,作用是将十六进制字符串转换为十进制整数。
int hexdec ( string $hex_string )
例如:
echo hexdec("1A"); // 输出 26
substr 用于截取字符串中指定位置和长度的子串。
string substr ( string $string , int $start [, int $length ] )
例如:
echo substr("abcdef", 1, 3); // 输出 "bcd"
假设我们有一个字符串,包含若干十六进制数字混合其他字符,如:
$data = "id=abc1234fxyz";
我们的目标是从该字符串中提取 "1234f" 这一部分(假设已知其位置),并将其转换为十进制数。
实现方法如下:
<?php
$data = "id=abc1234fxyz";
// 从字符串的第6个字符开始,截取5个字符(即 "1234f")
$hexString = substr($data, 5, 5);
// 将截取的十六进制字符串转换为十进制数字
$decimalValue = hexdec($hexString);
echo "十六进制字符串: " . $hexString . "\n";
echo "转换后的十进制数值: " . $decimalValue . "\n";
?>
输出:
十六进制字符串: 1234f
转换后的十进制数值: 74575
如果十六进制字符串不在固定位置,可以用字符串查找函数 strpos 来定位,然后配合 substr 截取。
例如:
<?php
$data = "user=xyz&code=1a2b3c&status=ok";
// 找到 "code=" 在字符串中的位置
$pos = strpos($data, "code=");
if ($pos !== false) {
// "code=" 后的十六进制数起始位置
$start = $pos + strlen("code=");
// 假设十六进制数长度为6
$hexString = substr($data, $start, 6);
$decimalValue = hexdec($hexString);
echo "提取的十六进制字符串: " . $hexString . "\n";
echo "转换后的十进制数值: " . $decimalValue . "\n";
} else {
echo "未找到指定的十六进制字符串。\n";
}
?>
输出:
提取的十六进制字符串: 1a2b3c
转换后的十进制数值: 1715004
substr 用于截取字符串中的指定部分。
hexdec 将十六进制字符串转换为十进制数值。
两者结合可以方便地提取并转换嵌入在字符串中的十六进制数。