c - 在任何平台上使用 ANSI C 保存和加载数据

标签 c serialization deserialization storage

假设我有 100 万个结构,每个都包含整数、 double 、字符串和其他结构,例如:

struct s1 {
    int f1;
    long f2;
    char* f3;
};

struct s2 {
    struct s1* f1;
    double f2;
};

我怎样才能将这些以二进制格式保存到一个文件中,然后在与编译可执行文件的平台不同的平台上从该文件中查找并加载它们,而不用担心字节序、浮点表示和其他特定于平台的陷阱?

首选二进制格式的原因主要是结果文件的大小。如果单独的整数看起来像“32435”,而我有数百万个整数,那么每个整数额外的 3 个字节会给文件增加相当多的大小。

最佳答案

将它们写成 ascii 文本、XML 或一些类似的非二进制格式。

关于c - 在任何平台上使用 ANSI C 保存和加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317462/

相关文章:

c - C 中的字符串标记

javascript - jQuery.parseJSON 无法解析序列化的 C# 字典

c# - 通过套接字TargetInvocationException进行二进制序列化/反序列化

c - 如何访问嵌套结构对象

c - 如何在三元条件中放入返回语句?

c - 仅当输出从行首开始时才打印输出?

c++ - 在 Qt : is it a proper way? 中 boost 序列化

javascript - react 序列化组件从服务器发送

c# - 如何重命名和重新映射具有非法 json 字段名称的字段

Java with GSON - 仅将值反序列化为 JSON 字符串的 ArrayList