module Faker::Base58

Public Class Methods

encode(str) click to toggle source
# File lib/helpers/base58.rb, line 5
def self.encode(str)
  alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
  base = alphabet.size

  lv = 0
  str.split('').reverse.each_with_index { |v, i| lv += v.unpack1('C') * 256**i }

  ret = +''
  while lv.positive?
    lv, mod = lv.divmod(base)
    ret << alphabet[mod]
  end

  npad = str.match(/^#{0.chr}*/)[0].to_s.size
  '1' * npad + ret.reverse
end