PHP負數轉16進位制再轉到10進位制的正確姿勢

sblack發表於2024-05-02
//要轉換的負數
$num = -10;

//將負數轉換為無符號整數的十六進位制表示
$hex_str = sprintf('%08X', $num & 0xFFFFFFFF);

//將十六進位制字串轉換為十進位制數值
$original_num = hexdec($hex_str);

//如果最高位是1,表示是負數,需要還原成負數
if (hexdec(substr($hex_str, 0, 1)) >= 8) {
$original_num = -((int)(0xFFFFFFFF ^ hexdec($hex_str)) + 1);
}

echo "轉換回來的數值:$original_num\n";

相關文章