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將十六進製字符串轉換為十進制數值。
兩者結合可以方便地提取並轉換嵌入在字符串中的十六進制數。