class CFPropertyList::Binary

def string_to_binary(val)

Uniques and transforms a string value to binary format and adds it to the object table
def string_to_binary(val)
  saved_object_count = -1
  unless(@unique_table.has_key?(val)) then
    saved_object_count = @written_object_count
    @written_object_count += 1
    @unique_table[val] = saved_object_count
    utf16 = !Binary.ascii_string?(val)
    utf8_strlen = 0
    if(utf16) then
      utf8_strlen = Binary.charset_strlen(val, "UTF-8")
      val = Binary.charset_convert(val,"UTF-8","UTF-16BE")
      bdata = Binary.type_bytes(0b0110, Binary.charset_strlen(val,"UTF-16BE"))
      val.force_encoding("ASCII-8BIT") if val.respond_to?("encode")
      @object_table[saved_object_count] = bdata + val
    else
      utf8_strlen = val.bytesize
      bdata = Binary.type_bytes(0b0101,val.bytesize)
      @object_table[saved_object_count] = bdata + val
    end
  else
    saved_object_count = @unique_table[val]
  end
  return saved_object_count
end