我被赋予了指定应用程序内部使用的文件格式的任务。
其中一项预期要求是:
文件的数据部分应由一系列
Int16
类型的值(短整数)组成,由一个或多个字节的适当组合分隔。
据我所知,Int16
可以包含任何单字节值,所以我不知道如何选择一些保证不会偶然出现的字节序列一条小溪。有这样的序列吗?
(而且,如果答案是"没有",那么确定文件中每个流的位置和大小的好方法是什么?)
答案 0 :(得分:2)
通过“流”,我假设请求表明在开始写入数据时长度未知。
因此,我建议使用“chunked”编码,其中每个子流被分成可变大小的片段,每个片段的长度在开头写为固定大小的整数。空块表示子流的结束。通常,块的最大长度将有助于分配缓冲区以进行有效的读写。
这是在HTTP "chunked" transfer encoding之后进行模式化的,并且在许多其他格式中使用了类似的方法,例如basic encoding rules for ASN.1.支持的不定长度编码
答案 1 :(得分:1)
我建议为每个流添加一个长度字段,而不是尝试使用分隔符,因为你已经给出了(没有合适的唯一分隔符)。 E.g:
<length>
<stream>
<length>
<stream>
<length>
<stream>
...
其中<length>
是一个4字节的整数,它定义了后续流中16位元素的数量。