gpt4 book ai didi

java - 序列化要由 Java 等反序列化的 C 结构的最佳方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:06 25 4
gpt4 key购买 nike

目前,我正在使用 fread()/fwrite() 将 C/C++ 结构中的一些数据保存并加载到文件中。这在这个 C 应用程序中工作时工作得很好(每当结构更改以将 sizeof() 参数更新为 fread()/fwrite() 时我都可以重新编译),但是我如何在事先不知道的情况下将此文件加载到其他程序中C结构的sizeof()s?

特别是,我编写了另一个 Java 应用程序来可视化该 C 结构二进制文件中包含的数据,但我想要一个关于如何读取该二进制文件的通用解决方案。 (而不是我必须在 C 结构发生变化时手动将 sizeof()s 放入 Java 应用程序源中......)

我正在考虑序列化为某种类型的文本或 XML,但我不确定从哪里开始(如何在 C 中序列化,然后如何在 Java 中反序列化以及将来可能的其他语言),如果这是可取的,其中结构的一个成员是一个 float 组,它可以以二进制格式向上移动约 50 MB(我有数百个这样的数据文件要读取和写入)。

C 结构很简单(没有严重的嵌套或指针引用),如下所示:

struct MyStructure {
char *title;
int id;
int param1;
int param2;
float *data;
}

最容易改变的部分是参数整数。

我有哪些选择?

最佳答案

如果您可以控制这两个代码库,您应该考虑使用 Protocol Buffers .

关于java - 序列化要由 Java 等反序列化的 C 结构的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/659693/

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