前段时间遇到了一个算法题: 十进制与十七进制转换! 当时没写出来,其实挺懊恼的,手写代码的思路容易被记得不熟的一些函数打断,当时觉得肯定能写出来,只是需要一点时间,最近正好有空,又理了一下思路,贴代码
<?php
//10进制转17进制
function tts($num){
$arr = [0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g'];
if ($num < 17) {
return $arr[$num];
}
$one = $num % 17;
return tts(($num - $one) / 17) . $arr[$one];
}
//17进制转10进制
function stt($num){
$arr = [0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f','g'];
$array = array_flip($arr);
$numArr = [];
$len = strlen($num);
for($i = 0; $i < $len; $i++) {
$numArr[$len - $i] = $num[$i];
}
$sum = 0;
foreach($numArr as $k => $v){
$a = $k -1 > 0 ? $k - 1 : 0;
$sum += $array[$v] * pow(17, $a);
}
return $sum;
}
echo stt('c2c');
echo tts(stt('c2c'));
die;