Method: BaseX#decode

Defined in:
lib/base_x.rb

#decode(encoded) ⇒ Object



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/base_x.rb', line 126

def decode(encoded)
  return "" if encoded.size == 0
  int = string_to_integer(encoded)
  decoded = Base256.integer_to_string(int)
  decoded_number_size = 256**(decoded.size)
  encoded_number_size = base**(encoded.size)

  # encoded_number_size / base < decoded_number_size <= encoded_number_size
  while decoded_number_size <= encoded_number_size / base
    decoded = "\x00" + decoded
    decoded_number_size *= 256
  end

  decoded
end