Есть ли техническое название для этой концепции разбора строки с размерами? - PullRequest
2 голосов
/ 05 декабря 2011

Некоторое время назад я придумал технику, которую я использовал в нескольких проектах. Он использует одну строку для хранения списка значений. Каждому значению предшествует размер значения, затем разделитель (после размера), а затем данные - и повторите. Использование этой техники означает, что вы можете хранить буквально любой тип символа, не пытаясь исключить использование разделителя между значениями.

Вот пример такой строки:

23|This is the first value13|Another value5|third

Это переводит в список этих значений:

  • Это первое значение
  • Другое значение
  • третий

Я узнал, проверив, что этот метод (наряду с моими функциями для преобразования между этой строкой и массивом или списком строк) очень быстр при сохранении минимального объема памяти. Это также очень полезно для отправки пакетов данных (вот где я впервые пришел к этому методу).

Есть техническое имя для этого? В этом случае синтаксический анализ слишком широк, должен быть более конкретный термин.

Ответы [ 4 ]

6 голосов
/ 05 декабря 2011

Из стандартных / установленных типов сериализации самым близким, с чем я знаком, является кодировка type-length-value (TLV) , которая отличается от вашей схемы тем, что она поддерживает использование нефиксированные типы, тогда как ваш требует, чтобы тип каждого поля был известен заранее (и, действительно, вы, похоже, используете только строки во всех полях).

4 голосов
/ 05 декабря 2011

Синтаксис языка FORTRAN имеет Константы Холлерита , иногда называемые Строки Холлерита . Они идентичны вашему примеру, за исключением использования буквы H вместо |.

1 голос
/ 05 декабря 2011

Это называется сортировкой .

0 голосов
/ 05 декабря 2011

Такой общий тип обработки данных существует столько же, сколько сама компьютерная наука.Он называется под разными именами, но идея всего этого связана со способностью обрабатывать большие объемы данных одновременно для повышения эффективности (обычно повышение скорости за счет меньшего количества дисковых операций).Известные примеры в Delphi включают TMemo.Text и даже до Delphi, типа TEXT или TEXTFILE в Turbo / Borland Pascal.За кулисами этот тип извлекает «текстовые данные», а затем анализирует их так, как вы описываете.Как поток (способ обработки файлов в любом случае), стандартные текстовые файлы Windows имеют # 13 # 10 в качестве разделителей, которые можно анализировать, чтобы определить, где в тексте происходят разрывы строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...