我在一段时间后想出了一种技术,我一直在多个项目中使用它。它使用单个字符串来存储值列表。每个值都以值的大小为前缀,然后是分隔符(在大小之后),然后是数据 - 并重复。使用这种技术意味着你可以在字面上存储任何类型的字符,而不试图在值之间排除使用分隔符。
以下是这样一个字符串的示例:
23|This is the first value13|Another value5|third
转换为这些值的列表:
我通过测试得知这个方法(以及我在这个字符串与数组或字符串列表之间进行转换的函数)非常快,同时保持最小的内存。它对于发送数据包也非常有用(这是我第一次提出这种方法的地方)。
这是否有技术名称?在这种情况下,解析过于宽泛,必须有一个更具体的术语。
答案 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作为分隔符,可以对其进行解析以确定文本中字符串中断的位置。