在PHP中,hexdec()函數用于將十六進制字符串轉換為十進制數值。但是,它不能直接處理負數。為了解決這個問題,你可以使用以下方法將負數的十六進制字符串轉換為十進制數值:
以下是一個示例函數,用于將負數的十六進制字符串轉換為十進制數值:
function hexdec_negative($hex) {
// 將十六進制字符串轉換為補碼表示的整數
$int = bindec(strrev($hex));
// 檢查得到的整數是否為負數
if ($int < 0) {
// 將補碼表示的整數轉換回十六進制字符串
$hex = dechex($int);
// 檢查十六進制字符串是否以"FF"開頭
if (substr($hex, 0, 2) === 'FF') {
// 從字符串中刪除"FF"
$hex = substr($hex, 2);
}
}
// 將十六進制字符串轉換為十進制數值
return hexdec($hex);
}
使用此函數,你可以將負數的十六進制字符串轉換為十進制數值,例如:
$hex = "-1A";
$decimal = hexdec_negative($hex); // 結果為 -26