请解释一下这个 PHP 的 62 进制转换函数/算法

Zna*_*kus 1 php algorithm base62

谁能解释一下下面的代码吗?那或者向我指出一些可以阐明一些观点的资源:)

它将整数转换为 base62 字符串。

private static $_characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

private static function _convertBase($num)
{
    $base = strlen(self::$_characters);
    $string = '';

    for ($t = floor(log10($num) / log10($base)); $t >= 0; $t--) {
        $a = floor($num / pow($base, $t));
        $string .= substr(self::$_characters, $a, 1);
        $num = $num - ($a * pow($base, $t));
    }

    return $string;
}
Run Code Online (Sandbox Code Playgroud)

更新:我想问的是:有人可以解释一下下面的算法吗?:) 谢谢。

Ali*_*xel 5

你太复杂了:

private static $_characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

private static function _convertBase($num)
{
    $base = strlen(self::$_characters); // 62
    $string = self::$_characters[$num % $base];

    while (($num = intval($num / $base)) > 0)
    {
        $string = self::$_characters[$num % $base] . $string;
    }

    return $string;
}
Run Code Online (Sandbox Code Playgroud)

  • 您有什么理由向后连接字符串然后反转它?`$string = self::$_characters[$num % $base] 。$string;` 否则会产生更具可读性的代码 (2认同)