我在字符串中以十进制表示的数字很大,如何在PHP中将其转换为以62为基(它应该包含0-9 a-z A-Z字符)
132127185823161910217189135207122569773239575592159106247615521112524948315189259327185683323811691221323802076037140179511755944397135
编辑:
在此线程中:converting a number base 10 to base 62 (a-zA-Z0-9) 我发现此函数可以将基数从62转换回10,现在它以8.5632121113223E + 140的形式返回数字,有没有办法使它返回具有完整值的字符串。 我尝试使用printf()但它会丢失数据
function anyToDec($num, $baseChars = '', $base = 62, $index = false) {
$baseChars = empty($baseChars) ? 'HbUlYmGoAd0ScKq6Er5PuZp3OsQCh4RfNMtV8kJiLv9yXeI1aWgFj2zTx7DnBw' : $baseChars;
if (!$base) {
$base = strlen($index);
} else if (!$index) {
$index = substr($baseChars, 0, $base);
}
$out = 0;
$len = strlen($num) - 1;
for ($t = 0; $t <= $len; $t++) {
$out = $out + strpos($index, substr($num, $t, 1)) * pow($base, $len - $t);
}
return $out;
}
答案 0 :(得分:-1)
我认为这段代码应该可以为您提供帮助。速度很快,但应该很好
function toChars($number) {
$res = base_convert($number, 10,26);
$res = strtr($res,'0123456789','qrstuvxwyz');
return $res;
}