我正在将 msgpack 编码的数据写入文件。在写作时,我只是使用 C API 的 fbuffer。如(我为示例去除了所有错误处理):
FILE *fp = fopen(filename, "ab");
msgpack_packer pk;
msgpack_packer_init(pk, fp, msgpack_fbuffer_write);
msgpack_pack_int(pk, 42);
// more data ...
我如何读回这个文件?我发现的所有示例都假设数据在内存中,但是,我的文件最大为 5GB,将其完全保存在内存中并不是一个好主意。我也不想自己大块阅读。毕竟,我不知道 msgpack 对象有多长,所以我最终可能会在缓冲区中得到半个整数。
msgpack 的解包能否以某种方式直接从磁盘读取?或者是否有一些标准模式可以做到这一点?
最佳答案
您可能会考虑为此使用“msgpack_unpacker”,这似乎是 MessagePack 实现“流”反序列化器的官方方式。看看 msgpack-c/example/c/lib_buffer_unpack.c
问候,NiteHawk
关于c - 如何解压 msgpack 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31969518/