Tag: msgpack

如何解压缩msgpack文件?

我正在将msgpack编码的数据写入文件。 在写作时,我只是使用C API的fbuffer。 如(我为示例划分了所有error handling): 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的unpack可以直接从磁盘读取吗? 或者是否有一些标准模式来做到这一点?

MessagePack C API

在查看MessagePack的C API时,有许多函数可以根据类型适当地序列化(打包)数据: msgpack_pack_uint8 , msgpack_pack_int32 ,… 在API中似乎没有等效的调用来解压缩数据。 msgpack_unpack_next返回一个msgpack_object 。 这些对象仅具有粗粒度类型(类型中最大的:int64,double,…),基于所包含的枚举。 我在这里错过了什么吗? 是期望使用粗物体然后再投射? 如何正确拆包? 此外,有没有好的文档或用法示例? 网站上的内容很简单。

如何使用msgpack-c正确解压缩和提取数据?

我目前正在尝试在用C编写的项目中使用msgpack。我使用msgpack来序列化结构的内容,然后通过网络发送,然后反序列化为相应的结构。另一边。 我正在尝试做的简明版本: #include #include #include typedef someStruct{ uint32_t a; uint32_t b; float c; } someStruct; int main (void){ someStruct data; /* … Fill ‘data’ with some data for test purposes …*/ msgpack_sbuffer* buff = msgpack_sbuffer_new(); msgpack_packer* pck = msgpack_packer_new(buff, msgpack_sbuffer_write); someStruct* structs = malloc(sizeof(someStruct) * 10); /* … Fill ‘structs’ with members containing test data […]