序列化数据:如何检查字节数组是Qt还是Boost

时间:2014-07-01 08:39:27

标签: qt serialization boost bytearray archive

我收到原始数据块,但没有关于序列化数据源的头信息。我唯一的信息是它的一个以下:序列化QtByteArray或Boost档案。有没有办法检查签名或类似的?

谢谢!

2 个答案:

答案 0 :(得分:4)

TL; DR:否。

其他答案相当危险。如果不向描述所用序列化类型的序列化数据添加一些信息,则无法完成您想要做的事情。请记住,Qt和Boost的序列化都不是针对恶意数据流而设计的。

Qt的序列化`QByteArray'只是一个32位字节计数,后跟数据。没有类型信息或类似的东西。 boost存档包含更多信息,但是,绝对不能保证它会在一个随机的字节流中正常失败。例如,它可能会因耗尽内存而失败。

答案 1 :(得分:-1)

尝试使用一个然后另一个反序列化,并假设操作成功时它是有效数据。它不容易出错,但您可以假设某些原始数据对两者都有效的概率很小。即使在这种情况下,您也必须尝试按特定顺序反序列化。首先放置最可能的。