# File lib/bcodec/encode.rb, line 26
  def encode(obj)
    str = ""
    if obj.class == String
      str << "%d:%s" % [ obj.length, obj ]
    elsif obj.class == Fixnum or obj.class == Bignum
      str << "i" <<  obj.to_s << "e"
    elsif obj.class == Array
      str << "l"
      obj.each { |i| str += encode(i) }
      str << "e"
    elsif obj.class == Hash
      str << "d"
      obj.sort.each do |k, v|
        raise InvalidKey unless k.instance_of?(String)
        str << encode(k)
        str << encode(v)
      end
      str << "e"
    else
      raise InvalidDataType
    end

    return str
  end