Из того, что я понимаю, случайные реализации двоичной сериализации нестатических структур (например, массива или вектора) обычно указывали бы "длину" структуры как первое слово (обычно 64-битный uint),затем приступим к кодированию значения каждой сущности без разделителей (учитывая, что сериализованные данные субъекта в каждой ячейке массива являются детерминированными, поэтому двоичному анализатору не требуется никакого предварительного просмотра или обратного отслеживания).
Будет ли это поведението же самое, традиционно, для строк utf-8?Я не вижу другого способа реализации двоичной сериализации для «неограниченных» строк utf-8, чтобы парсер не нуждался в возврате (что может быть действительно неэффективно) или в ожидании (что также потребовало бы чрезмерного тестирования на различные возможности).тоже неэффективно).Я предполагаю, что значение "length" будет обозначать количество символов, а не количество байтов, поскольку кодировка utf-8 варьируется от 1 до 4 байтов для каждого символа, хотя сама кодировка указывает, сколько байтов существует в символена основе первого байта (исключая обратное отслеживание и прогнозирование для каждого символа).
Например, поток октетов для строки abc
будет
[0,0,0,0,0,0,0,3,97,98,99]
, где 0,0,0,0,0,0,0,3
обозначает длину введенной строки в uint64, abc
.
Правильно ли понимаешь моя интуиция или я что-то упускаю?