Когда вы создаете строку, вы можете думать о ней как о списке символов, это означает, что для каждого символа в вашей строке вам необходимо поддерживать все возможные значения символа. От солнца документы
char : тип данных char представляет собой один 16-битный символ Unicode. Он имеет минимальное значение «\ u0000» (или 0) и максимальное значение «\ uffff» (или 65 535 включительно).
Если у вас сокращенный набор символов, которые вы хотите поддерживать, вы можете написать простой алгоритм сжатия, который аналогичен двоичному -> десятичному -> шестнадцатеричному разговору. Вы переходите с 65 536 (или сколько символов поддерживает целевая система) на 26 (алфавитный) / 36 (буквенно-цифровой) и т. Д.
Я использовал этот трюк несколько раз, например, для кодирования временных меток в виде текста (цель 36+, источник 10) - просто убедитесь, что у вас достаточно юнит-тестов!