gpt4 book ai didi

c++ - 二进制反序列化 - 如何找到它是什么类型的序列化?

转载 作者:行者123 更新时间:2023-11-28 01:49:42 25 4
gpt4 key购买 nike

我有一个由程序生成的 .dat 文件。程序所有者并不反对解析和编辑这个文件,但他不会给任何人答案。

该文件主要由以这种方式定义的变量组成:

在大多数情况下:

(4 bytes - length of the var name)(var name)(4 bytes of some internal var type)(4 bytes - possibly are elements count)(X bytes of var value)

很少:

(4 bytes - length of the var name)(var name)(1 zero byte)(4 bytes of some internal var type)

所以,例如:

([4 0 0 0][name])[11 0 0 0][1 0 0 0]([9 0 0 0][Alexander])

([8 0 0 0][names])[6 0 0 0](length [3 0 0 0])([4 0 0 0][John])([4 0 0 0][Anne])([7 0 0 0][SomeGuy])

我试图查看 boost 二进制序列化,但它没有在文件中添加变量名,我认为使用 8 个字节,而不是 4 个字节。

最佳答案

没有通用的方法来确定它是“什么类型的序列化”。该格式的作者做出了设计决定并得出了最终格式。它实际上可以是任何东西。您可以做出有根据的猜测(“逆向工程”),但唯一可以确定的方法是从作者那里获得规范。尽管您声称他不介意人们操纵以这种格式存储的文件,但他拒绝提供上述规范让我怀疑这是否属实,最终意味着您可能不得不继续猜测。

关于c++ - 二进制反序列化 - 如何找到它是什么类型的序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com