當前位置: 首頁> 最新文章列表> hexdec 配合substr 處理字符串中的十六進制數值

hexdec 配合substr 處理字符串中的十六進制數值

gitbox 2025-05-27

1. hexdec 函數簡介

hexdec是PHP 內置函數,作用是將十六進製字符串轉換為十進制整數。

 int hexdec ( string $hex_string )

例如:

 echo hexdec("1A"); // 輸出 26

2. substr 函數簡介

substr用於截取字符串中指定位置和長度的子串。

 string substr ( string $string , int $start [, int $length ] )

例如:

 echo substr("abcdef", 1, 3); // 輸出 "bcd"

3. 綜合應用示例

假設我們有一個字符串,包含若干十六進制數字混合其他字符,如:

 $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

4. 從不確定位置提取十六進製字符串

如果十六進製字符串不在固定位置,可以用字符串查找函數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

5. 總結

  • substr用於截取字符串中的指定部分。

  • hexdec將十六進製字符串轉換為十進制數值。

  • 兩者結合可以方便地提取並轉換嵌入在字符串中的十六進制數。