2016-10-07 7 views
0

Я использую библиотеку MessagePack for CLI (https://github.com/msgpack/msgpack-cli), и мне интересно, если можно отключить целочисленное сжатие.MessagePack: отключить целочисленное сжатие

Например:

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

Это заставляет меня явно преобразовать каждый элемент коллекции для того, чтобы бросить его обратно int[], что довольно много времени.

ответ

0

Использование непосредственно фиксированных размеров типов:

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); 
+0

На самом деле мой вопрос был направлен именно на C# реализации messagepack (https://github.com/msgpack/msgpack-cli). Я все еще не могу найти способ заставить сериализатор не сжимать целые числа. –

+0

Извините. Может быть, что-то вроде этого было бы полезно? 'Packer.Pack '. Это из 'msgpack-cli/blob/master/test/MsgPack.UnitTest/PackerTest.PackT.cs'. Я почти уверен, что где-то есть подходящий пример в папке 'test' :) – o2gy