我收到原始数据 block ,没有有关序列化数据来源的 header 信息。我所掌握的唯一信息是它是以下之一:序列化的 QtByteArray 或 Boost Archive。有什么方法可以检查签名或类似内容吗?
谢谢!
最佳答案
TL;DR:不。
其他答案相当危险。如果不向序列化数据添加一些描述所使用的序列化类型的信息,就无法完成您想要做的事情。请记住,Qt 和 Boost 的序列化都不是针对恶意数据流而设计的。
Qt 的“QByteArray”序列化只是一个 32 位字节计数,后跟数据。没有类型信息或类似的信息。 boost 存档包含更多信息,但仍然绝对不能保证它会在随机字节流上正常失败。例如,它可能会因耗尽内存而失败。
关于qt - 序列化数据: How to Check if byte array is Qt or Boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24505862/