Для этого вопроса предположим, что это Python, но это не обязательно имеет значение.
Представьте, что у вас есть произвольная строка ASCII, например:
jrioj4oi3m_=\.,ei9#
Не вдаваясь в детали, мне нужно передать эту строку как метку другой программе, но эта программа не поддерживает метки, содержащие специальные символы или даже числа. Итак, я пытаюсь закодировать строку ASCII в строку, которая использует произвольное подмножество ASCII.
Одним из очень наивных решений было бы преобразовать исходную строку в двоичную, затем преобразовать 0 в a и 1 в b. Это работает для решения моей проблемы, но я хотел бы узнать здесь лучшее решение, чтобы стать лучшим программистом.
Прежде всего, как именно называется эта проблема?
Это не совсем проблема хеширования, потому что хеширование IIRC обычно включает кодирование в строку, которая короче исходной, и включает коллизии.
Мне не нужно никаких коллизий, и мне все равно, насколько длинна закодированная строка, главное, чтобы она была короче, чем в наивном случае. (В идеале это была бы кратчайшая возможная длина с учетом подмножества)
На самом деле было бы идеально точно указать допустимый набор символов, а затем использовать обобщенный алгоритм кодирования для выполнения кодирования.
Расшифровку тоже неплохо бы знать.