# File lib/otnetstring.rb, line 62
    def encode(obj, string_sep = ',')
      case obj
      when String   then with_encoding "#{obj.bytesize}#{string_sep}#{obj}", "binary"
      when Integer  then encode(obj.inspect, '#')
      when NilClass then "0~"
      when Array    then encode(obj.map { |e| encode(e) }.join, '[')
      when Hash     then encode(obj.map { |a,b| encode(a)+encode(b) }.join, '{')
      when FalseClass, TrueClass then encode(obj.inspect, '!')
      else raise Error, 'cannot encode %p' % obj
      end
    end