module Neb::BaseConvert

@see github.com/cryptape/ruby-ethereum/blob/master/lib/ethereum/base_convert.rb

Constants

BaseSymbols

Public Instance Methods

convert(s, from, to, minlen = 0) click to toggle source
# File lib/neb/base_convert.rb, line 25
def convert(s, from, to, minlen = 0)
  return Utils.lpad(s, symbols(from)[0], minlen) if from == to
  encode(decode(s, from), to, minlen)
end
decode(s, base) click to toggle source
# File lib/neb/base_convert.rb, line 42
def decode(s, base)
  syms = symbols(base)
  s = s.downcase if base == 16

  result = 0
  while s.size > 0
    result *= base
    result += syms.index(s[0])
    s = s[1..-1]
  end

  result
end
encode(v, base, minlen = 0) click to toggle source
# File lib/neb/base_convert.rb, line 30
def encode(v, base, minlen = 0)
  syms = symbols(base)

  result = ''
  while v > 0
    result = syms[v % base] + result
    v /= base
  end

  Utils.lpad(result, syms[0], minlen)
end
symbols(base) click to toggle source
# File lib/neb/base_convert.rb, line 21
def symbols(base)
  BaseSymbols[base] or raise ArgumentError, "invalid base!"
end