低进制转化为高进制的思路:
将低进制针对高进制求商取余,重复操作直到商为0.
如下将10进制转化为16进制(6666转化为16进制):
6666除以16,余数为10(A),商为416,
416除以16,余数0(0),商为26,
26除以16,余数为10(A),商为1,
1除以16,余数为1,商为0,结束。
所以6666的16进制为1A0A
使用PHP代码实现如下:
function test($n,$f=16){
$r = "0123456789AFCDEF";
$t = [];
do{
$a = $n%$f;
$n = floor($n/$f);
$t[] = $a;
}while($n!=0);
$len = count($t);
$target = '';
for($i=$len-1;$i>=0;$i--){
$target .= $r[$t[$i]];
}
return $target;
}
网友评论