【问题标题】:MessagePack: disable integer compressionMessagePack:禁用整数压缩
【发布时间】:2016-10-07 11:30:05
【问题描述】:

我正在使用MessagePack for CLI (https://github.com/msgpack/msgpack-cli) 库,我想知道是否可以禁用整数压缩。

例如:

// The following collection
object[] { (Int32)10, (Int32)100, (Int32)1000 };
// will look like this after unpacking
MessagePackObject[] { (Byte)10, (Byte)100, (Int16)1000 }

这迫使我显式转换集合中的每个项目,以便将其转换回 int[],这非常耗时。

【问题讨论】:

    标签: c# .net msgpack messagepack


    【解决方案1】:

    直接使用固定大小的类型:

    msgpack::sbuffer buffer;
    msgpack::packer<msgpack::sbuffer> pk(&buffer); 
    
    msgpack::type::fix_uint32 code(0x00);
    msgpack::type::fix_uint32 type(123);
    
    pk.pack(code);
    pk.pack(type);
    

    【讨论】:

    • 其实我的问题是专门针对messagepack的C#实现(github.com/msgpack/msgpack-cli)。我仍然找不到任何方法来强制序列化程序不压缩整数。
    • 对不起。也许这样的东西会有用? packer.Pack&lt;System.Int32&gt;。它来自msgpack-cli/blob/master/test/MsgPack.UnitTest/PackerTest.PackT.cs。我很确定test 文件夹中有一个合适的例子:)
    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多