加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 16:22:03 所属栏目:Java 来源:网络整理
导读:目前,我正在使用fread()/ fwrite()将C/C++结构中的一些数据保存并加载到文件中.在这个C应用程序中工作时这很好用(我可以在结构更改时重新编译以更新fread()/ fwrite()的sizeof()参数,但是如何在不事先知道的情况下将此文件加载到其他程序中C结构的sizeof()?
目前,我正在使用fread()/ fwrite()将C/C++结构中的一些数据保存并加载到文件中.在这个C应用程序中工作时这很好用(我可以在结构更改时重新编译以更新fread()/ fwrite()的sizeof()参数,但是如何在不事先知道的情况下将此文件加载到其他程序中C结构的sizeof()?

特别是,我编写了这个其他Java应用程序,可视化该C struct二进制文件中包含的数据,但我想了解如何读取该二进制文件的一般解决方案. (而不是每当C结构发生变化时,我都必须在Java应用程序源中手动输入sizeof();)

我正在考虑序列化到某种文本或XML,但我不知道从哪里开始(如何在C中序列化,然后如何在Java中以及将来可能的其他语言中反序列化),如果是这里建议结构的一个成员是一个浮点数组,它可以以二进制格式向上移动~50 MB(我有数百个这样的数据文件可以读写).

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

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

最容易改变的部分是param整数.

我有什么选择?

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读