ruby 用于URL Shortner的编码/解码函数 - 在Ruby中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 用于URL Shortner的编码/解码函数 - 在Ruby中相关的知识,希望对你有一定的参考价值。

module UrlShortener
  class << self
    
    CODESET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    BASE    = CODESET.length # 62
    
    def encode(id)
      hash = ''
      while id > 0
        hash = CODESET[id % BASE].chr + hash
        id = (id.to_f / BASE.to_f).floor
      end
      hash
    end
    
    def decode(hash)
      id = 0
      hash.chars.each_with_index do |c,i|
        n = CODESET.index(c)
        return if n < 0 # invalid codeset
        id += n * (BASE ** (hash.length-i-1))
      end
      id
    end
    
  end
end

__END__

Usage:

Normally a web resource is referenced by a unique integer as in: http://site.com/posts/300.
The methods above simply encode the integer to base 62 with the codeset defined above.
It's the same thing as converting base 10 to base 16 (hex), but in this case we're converting
base 10 to our own base 62.

UrlShortener.encode(300)
=> "4Q"

UrlShortener.decode("4Q")
=> 300

UrlShortener.encode(1000000)
=> "4c92"


以上是关于ruby 用于URL Shortner的编码/解码函数 - 在Ruby中的主要内容,如果未能解决你的问题,请参考以下文章

用于解码/编码修改后的 base64 URL 的代码

WebUtility(提供在处理 Web 请求时用于编码和解码 URL 的方法。)

JS对URL进行编码和解码

用jq编码解码一个url地址

js对url进行编码和解码

javascript对url进行编码和解码