Однако я хочу закодировать эту строку, есть ли другие способы закодировать std :: string, чтобы люди не могли ее расшифровать
.Какие люди?
Лично я классифицирую их как:
- "Мой глупый брат"
- "Моя любопытная, но умная мама"
- "Aконкурирующая компания "
- " Правительство ".
Шифрование для избиения людей:
- Брат: (добавьте 'N' к каждому символу) (вычтите 'N' для декодирования)
- Мать:(XOR ключ)
- Компания: Не говоря уже о реальном пакете шифрования (например, SHA-512)
- Правительство: Да, верно.
Если они хотят что-то получить от меня, у меня естьнет шансов.
Так что я нанимаю профессиональную компанию, чтобы справиться с этим.
Пока я решил, что сериализовать AddressBook будет означать запись кодированной версии каждого контакта в отдельной строке в файле, который будет открыт в двоичном режиме.
В двоичном / текстовом режиме нет никакой разницы.Двоичный режим просто означает, что \ n не преобразуется в End of Line Sequence
.
В основном это будет строка, которую я проанализирую позже, чтобы получить значения, где-то вдоль строк: "Джон ~ Доу ~ 42"
Конечно,но я бы использовал '' (пробел) в качестве разделителя (поскольку потоковая библиотека уже использует в качестве разделителя по умолчанию).Это сделает код намного проще для написания.Как отмечалось ранее, строки должны быть закодированы с их длиной (если только у вас нет строк фиксированной длины).
, потому что, если мой класс Person получает много новых переменных-членов, эта строка может быть довольно длинной.
Если вы планируете кодировать больше информации, то я бы также добавил поле версии.Таким образом, вы сначала читаете номер версии, это говорит о том, какие еще поля следует ожидать.
Я надеялся, что его можно закодировать как шестнадцатеричное представление
Это неимеет смысл.
Все просто число.
если не компактно?
Конечно, вы можете сжать данные.
Посмотрите алгоритмы сжатия.