c - C 中的跨平台数据类型库

标签 c cross-platform

是否有用于提供跨平台数据类型的 C(不是 C++、Boost 等)库?

具体来说,我想将 int 存储在 32 位 linux 机器的文件中,从 64 位 windows 读取文件和相同的 int机器。这可能吗?

更新:我也不想使用 sqlite 或某种数据库。我想要一个可以帮助我在整个代码中使用数据类型的库。

最佳答案

如果您只想存储 32 位有符号整数,只需确定一种格式,例如大端格式。然后您可以自己编写序列化/反序列化:

void write_int32_be (int32_t i, FILE *f)
{
  uint8_t buf[4];

  buf[0] = ((uint32_t)i >> 24);
  buf[1] = ((uint32_t)i >> 16) & 0xFF;
  buf[2] = ((uint32_t)i >> 8) & 0xFF;
  buf[3] = (uint32_t)i & 0xFF;
  fwrite (buf, 4, 1, f);
}

int32_t read_int32_be (FILE *f)
{
  uint8_t buf[4];

  fread (buf, 4, 1, f);

  return ((uint32_t)buf[0] << 24) |
         ((uint32_t)buf[1] << 16) |
         ((uint32_t)buf[2] << 8) |
          (uint32_t)buf[3];
}

如果您需要多种类型,请使用像 tpl 这样的库, Eet , Avro , protobuf-c或者像XDR这样的标准的实现, JSON , 或 ASN.1 .如果您有大型数值数据集,请使用类似 HDF 的内容或 NetCDF .

关于c - C 中的跨平台数据类型库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703949/

相关文章:

c - 在 C 中,结构名称何时必须包含在结构初始化和定义中?

无法访问地址 X 处的内存

c - 如何根据用户输入每次#include 不同的文件?

python - pip:将依赖项下载到特定平台,包括非二进制文件

C代码: for loop compiles with gcc but doesn't run

c - 循环内递归

c++ - C++跨平台延迟毫秒

c++ - 重命名函数 vs undef : conflicts with Windows API

java - 如何使 JFileChooser 打开显示当前工作目录,无论使用什么操作系统?

cross-platform - 根据 config_setting 创建不同的规则