У меня есть ограниченное хранилище, которое может хранить только 16 байтов в массиве байтов. Если у меня длинная строка, String.getBytes() не будет работать для меня.Преобразование строки Java в 16-байтовый массив байтов
Как сделать, чтобы преобразовать/закодировать длинную строку java в 7-битных стандартных символах ascii, установленных в 16-байтовый массив байтов, которые могут быть закодированы обратно в исходную строку? Тем не менее, я понимаю, что будет исходная строка ввода. Я также хочу посоветовать, как устанавливать требования с разумными ограничениями длины, то есть длиной адреса электронной почты.
Имеет ли строка произвольное значение или имеется только ограниченное количество значений, которое может иметь? Сколько из этих строк будет? Является ли хранилище ограниченным ОЗУ или можно хранить строки где-нибудь, где отменяется ограничение на 16 байт? – yshavit
Ограничение на самом деле устанавливается внешней lib, что является пределом для приема байтового массива в 16 фиксированных размерах массива. Мои строки ввода - это фактически адрес электронной почты в 7-разрядных наборах символов ascii для печати. Я не могу ограничить адрес электронной почты менее 16 символами, но я хотел бы знать разумный способ продлить допустимую длину электронной почты. – Sean
Если это электронные адреса, легко создать настраиваемую кодировку, которая отображает все строчные буквы и большинство знаков пунктуации на 5-битные символы, а затем расширяет их, чтобы добавить поддержку цифр. Таким образом, вы можете разместить до 25 символов в 16 байт. Не уверен, что этого вам достаточно. Для меня это не так. Вы также можете провести некоторые эксперименты с кодированием адресов с использованием контекстного кодирования Хаффмана. Я сомневаюсь, что результаты будут большими. –