Rorcraft Blog

Ruby URL safe base62 string like youtube

http://ronny.haryan.to/archives/2009/04/07/build-your-own-url-shortening-service/#more-191

1
2
3
4
5
6
7
8
9
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

class BaseCodec
  def self.base_n_decode(s, alphabets)
    n = alphabets.length
    rv = pos = 0
    charlist = s.split("").reverse
    charlist.each do |char|
      rv += alphabets.index(char) * n ** pos
      pos += 1
    end
    return rv
  end
  
  def self.base_n_encode(num, alphabets)
    n = alphabets.length
    rv = ""
    while num != 0
      rv = alphabets[num % n, 1] + rv
      num /= n
    end
    
    return rv
  end
  
end
 
class Base62 < BaseCodec
  ALPHABETS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  def self.decode(s)
    base_n_decode(s, ALPHABETS)
  end
  
  def self.encode(s)
    base_n_encode(s, ALPHABETS)
  end
 
end

  • Posted on April 13, 2009
  • Tagged Home
blog comments powered by Disqus

Contact

We love to hear about your web projects.
Email:
Sydney: +61 421 591 943
Hong Kong:+852 6901 2682

Categories