将大数从10转换为62

时间:2019-01-26 12:17:22

标签: php base

我在字符串中以十进制表示的数字很大,如何在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;
}

1 个答案:

答案 0 :(得分:-1)

我认为这段代码应该可以为您提供帮助。速度很快,但应该很好

function toChars($number) {
  $res = base_convert($number, 10,26);
  $res = strtr($res,'0123456789','qrstuvxwyz');
  return $res; 
}