Posted by & filed under 每日一题.

【四脚猫】每日一题(2014年12月05日): 我们知道,计算机是基于二进制的,后来为了表达数据的方便,我们常常使用16进制,那么如何实现任意进制的数据互相转换呢,比方说 32 进制的字母表依次是:
[0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v]

那么我们如何编写算法,把一个已知的十进制数转为32进制呢?

比方说 convert32(5000) ,结果应该是 4s8
convert32(6000) ,结果应该是 5rg

那么这个convert32 函数如何来实现?

参考答案:
以下是 Diven 提供的解法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function convert32($oNum)
{
$base = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g',
'h','i','j','k','l','m','n','o','p','q','r','s','t','u','v');
$arr = array();
$arr[0] = $oNum%32;
while ($oNum = floor($oNum/32)) {
$arr[] = $oNum%32;
}
krsort($arr);
$num = '';
foreach ($arr as $v) {
$num .= $base[$v];
}
return $num;
}

var_dump(convert32(6000));
var_dump(convert32(5000));

欢迎各位攻城狮,各位大牛给每日一题投稿,大家可以把自己碰到的有趣问题,工作中碰到的难题等…发送到 稿件邮箱:2313427189@qq.com