У меня много пакетов двоичных данных, размером от 16 до 4096 байт, которые необходимо сохранить в базе данных и которые легко сопоставимы как единица измерения (например, две группы данных, только если совпадают длины и все байты)матч).Строки хороши для этого, но преобразование двоичных данных вслепую в строку склонно вызывать проблемы из-за проблем кодирования / реинтерпретации символов.
Base64 был распространенным методом для хранения строк в эпоху, когда 7-битный ASCII былнорма;его 33% -ое космическое наказание было немного раздражающим, но не ужасным.К сожалению, если кто-то использует UTF-16, размер дискового пространства составляет 166% (8 байт для хранения 3), что выглядит довольно странно.
Существует ли какой-либо общий способ хранения для хранения двоичных данных в допустимой строке Unicode, которыйПозволит ли лучшая эффективность в UTF-16 (и, надеюсь, не будет слишком ужасной в UTF-8)?Кодирование base-32768 будет хранить 240 битов в шестнадцати символах, что займет 32 байта UTF-16 или 48 байтов UTF-8.Для сравнения, кодирование base64 будет использовать 40 символов, что займет 80 байтов UTF-16 или 40 байтов UTF-8.Подход, который был разработан для того, чтобы занимать одно и то же пространство в UTF-8 или UTF-16, может хранить 48 бит в трех символах, которые будут занимать восемь байтов в UTF-8 или UTF-16, таким образом, сохраняя 240 бит в 40 байтах любого UTF.-8 или UTF-16.
Существуют ли стандарты для чего-либо подобного?