Представление числа в любой системе исчисления. base 62, 36, 64 encode decode. Сокращение урла или ссылки



Здравствуйте, мои дорогие! =)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function baseNum_encode($val, $chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {
    // не можем использовать числа больше чем 2^31-1 = 2147483647
    $base = strlen($chars);
    $str = '';
    do {
    $i = $val % $base;
    $str = $chars[$i] . $str;
    $val = ($val - $i) / $base;
    } while($val > 0);
    return $str;
}
 
function baseNum_decode($str, $chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {
    $len = strlen($str);
    $base = strlen($chars);
    $val = 0;
    $arr = array_flip(str_split($chars));
    for($i = 0; $i < $len; ++$i) {
        $val += $arr[$str[$i]] * pow($base, $len-$i-1);
    }
    return $val;
}

Похожие статьи:

  1. Кодирование числа в 62-чную систему исчисления. base62_encode, base62_decode

Ответить


[ Ctrl + Enter ]