class ROTP::Base32
def decode(str)
def decode(str) buffer = 0 idx = 0 bits_left = 0 str = str.tr('=', '').upcase result = [] str.split('').each do |char| buffer = buffer << SHIFT buffer = buffer | (decode_quint(char) & MASK) bits_left = bits_left + SHIFT if bits_left >= 8 result[idx] = (buffer >> (bits_left - 8)) & 255 idx = idx + 1 bits_left = bits_left - 8 end end result.pack('c*') end