[英]protobuf-net deserialize kth element in a serialized array
我正在流中的位置pos
处写一个整数数组。 我基本上有一个int[]
,我使用Serializer.SerializeWithLengthPrefix(stream, array, typeof(int[]), PrefixStyle.Fixed32, -1);
。 这会将具有正确前缀长度的数组追加到流中。
我想以随机索引反序列化流中的元素。 一种方法是通过pos + (index*fixedLength)
进入流,但是我注意到此数组中的整数是使用DataFormat.Default
编写的,它产生了变长编码。
有办法改变吗?
我可以看到这样做的一种方法是将数组封装为某些包装器类中的属性。 然后,我可以在属性中指定DataFormat.FixedSize
。 这是这种情况下的最佳做法吗?
另外, fixedLength
是什么? sizeof(int)
?
谢谢,尤利安
坦白说,如果您想要的只是文件(或任何其他流)中固定大小的整数,那么使用协议缓冲区绝对没有任何好处。 忘记了-只需将整数写为4字节的块(小尾数可能是最方便的),然后直接从文件(/流)访问它们。 协议缓冲区使结构化数据的处理变得容易,但这并不意味着您应将其用于每个作业。 在这种情况下,仅使用原始偏移量是绝对有意义的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.