php16进制转10进制(正负数)
发表于:2024-05-16 17:14:55浏览:282次
引言
我们需要先了解下负整数转换为16进制表示法,如图所示
php没有提供直接正负数16进制转10进制的方法,我们需要造这样的方法。
方法
if (!function_exists('hex_dec')) {
/**
* 16进制转10进制,并区分正负数
* @param $str
* @return float|int
*/
function hex_dec($str){
// 一般说明带符号 第一个字符小于8为正数(0-7) 不小于8为负数(8-F)
if(hexdec($str[0]) < 8){
return hexdec($str);
}
$bin = decbin(hexdec($str)-1);
$strlen = strlen($bin);
$fan = '';
for ($i=0; $i < $strlen; $i++) {
if($bin[$i] == 0){
$fan .= '1';
}else{
$fan .= '0';
}
}
return -bindec($fan);
}
}
栏目分类全部>