是否有用于提供跨平台数据类型的 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/