我们如何识别一个文件是否被串行化?



我想确定要反序列化的文件是否被protobuf序列化。这是因为我想为用户提供多个序列化和反序列化文件的选项。我正在使用protobuf.net序列化为protobuf格式。

不存在显式的protobuf标记,因此您所能做的就是测试是否可能是protobuf。您可以通过尝试反序列化(并注意失败)来做到这一点,或者通过简单地通过ProtoReader API运行它并查看它是否干净地运行到最后,也许使用SkipField()(然而,并不是说如果使用SkipField(),有一些内部有效负载可以完全跳过-我可以构造一个示例,当使用SkipField()时通过,但当正确反序列化时失败)。

由于您正在使用文件,您也可以使用文件扩展名作为额外的提示。

最新更新