<?php
/**
* 任意长度的16进制转10进制
* @param string $hex_str
* @return string
*/
function hexToDec($hex_str)
{
$hex_str = trim($hex_str);
$bin_str = "";
for ($i = 0; isset($hex_str[$i]); $i++) {
$bin = decbin(hexdec($hex_str[$i]));
if ($i) {
$bin_str .= sprintf("%04d", $bin);
} else {
$bin_str .= $bin;
}
}
$num = array(0);
for ($i = 0; isset($bin_str[$i]); $i++) {
$plus = 0;
for ($j = 0; isset($num[$j]); $j++) {
$num[$j] = ($num[$j] << 1) + $plus;
if ($num[$j] > 9) {
$num[$j] -= 10;
$plus = 1;
} else {
$plus = 0;
}
}
if ($plus) {
$num[] = 1;
}
if ($bin_str[$i] === '1') {
$plus = 1;
for ($j = 0; isset($num[$j]); $j++) {
$num[$j] += $plus;
if ($num[$j] > 9) {
$num[$j] -= 10;
$plus = 1;
} else {
$plus = 0;
break;
}
}
if ($plus) {
$num[] = 1;
}
}
}
return implode("",array_reverse($num));
}
任意长度的16进制转10进制
发布时间 2023-10-31 08:53:09作者: 雨泣的世界