c - 如何解压 msgpack 文件?

标签 c file disk msgpack

我正在将 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/

相关文章:

git - 如何在不影响其他工作副本的情况下 .gitignore 和删除已提交的文件?

Delphi and HDD I/O Quoting , Resource Pre-Caching , Read/Write/seek 参数限制

c - c中表格内的不同颜色

c - 我的 (AT&T) 程序集 (x86-x64) 代码应该增加但不增加

c - 字符串无法像c程序一样将小写转换为大写

c - makedepend 无法重命名 makefile

linux - 如何删除 root 拥有的名称中包含空格的文件?

python - 如何在 Python 中将字符串包装到文件中?

Windows 10 IoT Core PowerShell 磁盘管理命令

python - 从Python并行批量读取文件