qt - 序列化数据: How to Check if byte array is Qt or Boost

标签 qt serialization boost arrays archive

我收到原始数据 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/

相关文章:

c++ - 我应该将哪个版本的 boost 与 c++ visual-studio-2005 一起使用?

c++ - 使用 stackBefore 更改 QGraphicsItem 堆栈顺序

python - 如何使用 RecursionError(Python, PyQt4) 改善我的情况?

c++ - 调用使用字符数组的类函数 (C++)

java - Lib Gdx json 序列化异常和缺少无参数构造函数

c++ - 使用 composite_key 和按位与比较 boost multi_index_container

c++ - 用于将内存块附加到连续内存区域的良好容器

c++ - QTableView无法隐藏列

c++ - QListview, QTreeview 是正确的以列表方式显示文件

java - 序列化独立于方法吗?