function from10to64($base10) { $ret = ""; if ( $base10 > 0 ) { while ( $base10 > 0 ) { $rem = $base10 % 64; $base10 = floor($base10 / 64); $ret = char64($rem) . $ret; } } else { $ret = "0"; } return $ret; } function from64to10($base64) { $ret = 0; if ( strlen($base64) > 0 ) { $exp = 1; for ( $i = strlen($base64) - 1; $i >= 0; $i-- ) { $dig = substr($base64, $i, 1); $ret += (char10($dig) * $exp); $exp = $exp * 64; } } else { $ret = 0; } return $ret; } function char64($num) { if ( $num >= 0 && $num <= 9 ) return "" . $num; else if ( $num >= 10 && $num <= 35 ) return chr($num + 55); else if ( $num >= 36 && $num <= 61 ) return chr($num + 61); else if ( $num == 62 ) return "-"; else if ( $num == 63 ) return "_"; } function char10($dig) { $asc = ord($dig); if ( $asc == 95 ) return 63; else if ( $asc == 45 ) return 62; else if ( $asc >= 97 && $asc <= 122 ) return $asc - 61; else if ( $asc >= 65 && $asc <= 90 ) return $asc - 55; else if ( $asc >= 48 && $asc <= 57 ) return $asc - 48; }