解析具有大小的字符串的概念是否有技术名称?

时间:2011-12-04 23:22:44

标签: string list delphi packet

我在一段时间后想出了一种技术,我一直在多个项目中使用它。它使用单个字符串来存储值列表。每个值都以值的大小为前缀,然后是分隔符(在大小之后),然后是数据 - 并重复。使用这种技术意味着你可以在字面上存储任何类型的字符,而不试图在值之间排除使用分隔符。

以下是这样一个字符串的示例:

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

转换为这些值的列表:

  • 这是第一个值
  • 另一个值
  • 第三

我通过测试得知这个方法(以及我在这个字符串与数组或字符串列表之间进行转换的函数)非常快,同时保持最小的内存。它对于发送数据包也非常有用(这是我第一次提出这种方法的地方)。

这是否有技术名称?在这种情况下,解析过于宽泛,必须有一个更具体的术语。

4 个答案:

答案 0 :(得分:6)

在标准/已建立的序列化类型中,我最熟悉的是type-length-value (TLV) encoding,它与您的方案的不同之处在于它支持使用非固定类型,而您的类型需要每个字段都要提前知道(事实上,你似乎只在所有字段中使用字符串)。

答案 1 :(得分:4)

FORTRAN语言的语法有 Hollerith constants ,有时称为 Hollerith字符串。除了使用字母H而不是|之外,它们与您的示例相同。

答案 2 :(得分:1)

这称为marshalling

答案 3 :(得分:-1)

这种通用类型的数据处理与计算机科学本身一样长。它有不同的名称,但它的想法都与能够一次处理大量数据的能力有关(通常通过更少的磁盘i-o提高速度)。 Delphi中值得注意的例子包括TMemo.Text,甚至在Delphi之前,Turbo / Borland Pascal中的TEXT或TEXTFILE类型。在幕后,这种类型会回退“文本数据”,然后以您描述的方式解析它。作为流(无论如何处理文件的方式),标准Windows文本文件将#13#10作为分隔符,可以对其进行解析以确定文本中字符串中断的位置。