Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Base 62 Encoding">
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Base 62 encoding</title>
</head>
<body>
</body>
</html>
 
console.clear();
const BASE_62_VALUES = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
// convert from decimal to base (default 62)
function to_base(num, base = 62) {
  if (num === 0 ) return BASE_62_VALUES[0]
  result = []
  while (num > 0) {
    r = num % base
    result.unshift(BASE_62_VALUES[r])
    num = Math.floor(num / base)
  }
  return result.join("");
}
// Convert to decimal from base (default 62) encoded string
function from_base(value, base = 62) {
  base_10_num = 0
  digit = 0
  value.split('').reverse().forEach(char => { 
    num = BASE_62_VALUES.indexOf(char)
    base_10_num += num * Math.pow(base, digit) 
    digit += 1
  })
 
  return base_10_num
}
function convertToShortUrl(url) {
  
}
console.log(`1:  ${to_base(1)}`);  // => 1
console.log(`decode:  ${from_base(to_base(1))}`);  // => 1
  
console.log(`98:  ${to_base(98)}`); // => 1A
console.log(`decode:  ${from_base(to_base(98))}`); // => 98
console.log(Number.MAX_VALUE);
// Reversibility Sampler using 1000 iteration
function randomInteger(min, max) {
  // now rand is from  (min-0.5) to (max+0.5)
  let rand = min - 0.5 + Math.random() * (max - min + 1);
  return Math.round(rand);
}
function test_monte_carlo_b10_to_b62_to_b10() {
  
  [...Array(1000).keys()].forEach(i => {
    seed = randomInteger(1,100000000); 
    b62  = to_base(seed, base=62)
    console.log(seed == from_base(b62))
  })
}
test_monte_carlo_b10_to_b62_to_b10();
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
rajeshpillaipro
0viewers