- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
function num_to_sxg($n) {
$s = "";
$m = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ_abcdefghijkmnopqrstuvwxyz";
if ($n===undefined || $n===0) { return 0; }
while ($n>0) {
$d = $n % 60;
$s = strcat($m[$d],$s);
$n = ($n-$d)/60;
}
return $s;
}
function num_to_sxgf($n, $f) {
$s = num_to_sxg($n);
if ($f===undefined) {
$f=1;
}
$f -= strlen($s);
while ($f > 0) {
$s = strcat("0",$s);
--$f;
}
return $s;
}
function sxg_to_num($s) {
$n = 0;
$j = strlen($s);
for ($i=0;$i<$j;$i++) { // iterate from first to last char of $s
$c = ord($s[$i]); // put current ASCII of char into $c
if ($c>=48 && $c<=57) { $c=$c-48; }
else if ($c>=65 && $c<=72) { $c-=55; }
else if ($c==73 || $c==108) { $c=1; } // typo capital I, lowercase l to 1
else if ($c>=74 && $c<=78) { $c-=56; }
else if ($c==79) { $c=0; } // error correct typo capital O to 0
else if ($c>=80 && $c<=90) { $c-=57; }
else if ($c==95) { $c=34; } // underscore
else if ($c>=97 && $c<=107) { $c-=62; }
else if ($c>=109 && $c<=122) { $c-=63; }
else { $c = 0; } // treat all other noise as 0
$n = 60*$n + $c;
}
return $n;
}
Угадайте, какой это язык и что пил автор.
http://ideone.com/87cVrr
http://ideone.com/Z8j7ve
1024-- 02.05.2015 13:51 # +2
kegdan 02.05.2015 13:57 # +7
Вспомнилось
Паттерн - это когда вместо 5 одинаковых строк коды вы пишете 50, но разных
solnze_dar 28.02.2016 00:15 # 0
http://tantek.pbworks.com/w/page/19402946/NewBase60
Саму кодировку предполагалось использовать в сокращателе URL. Она не содержит трудноразличимых символов, поэтому автор предполагает, что закодированный ID легко набирается с распечатки.
bormand 28.02.2016 19:52 # −12
Только я бы вообще выкинул к хуям все эти 0, 1, I, l, O и o. Т.к. даже если парсер толерантен, юзера всё равно будет напрягать вопрос, правильно ли он вбил (меня всегда напрягает)...
roman-kashitsyn 01.03.2016 10:05 # +3
Вавилонцы бы одобрили.
3_14dar 01.03.2016 10:06 # −13
kegdan 01.03.2016 14:32 # 0
3_14dar 01.03.2016 14:33 # −13
kegdan 01.03.2016 14:39 # 0
Только не было вычитания позиций. То есть 9 - это IIIIIIIII а не IX
3_14dar 01.03.2016 15:21 # −13
barop 16.03.2017 14:58 # −13
3_dar 25.09.2020 00:02 # 0