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 |
