Я пытаюсь десериализация пакета MsgPack, что я имею в массиве байт, как это:C#/MsgPack.CLI: Орден десериализации
47 52 209 0 144 209 0 144 72 86 54 195 209 66 73
И я хочу, чтобы получить его в объект этого типа:
public class Info
{
public byte wX;
public byte wY;
public Int16 wMXCount;
public Int16 wMYCount;
public byte wMZCount;
public byte wMRegionZ;
public byte wZ;
public bool m;
public Int16 tkn;
}
Я использую MsgPack.CLI попытаться десериализации его, как видно here.
static public T Deserialize<T>(byte[] bytes)
{
var serializer = MessagePackSerializer.Get<T>();
using (var byteStream = new MemoryStream(bytes))
{
return serializer.Unpack(byteStream);
}
}
, а затем запустить его с
Info mi2;
mi2 = Deserialize<Info>(bytes); //bytes is the byte array that contains the MsgPack
К сожалению MI2 это так же, как недавно созданной информации и не содержит каких-либо данных из MsgPacket. Было бы здорово, если бы у кого-то было представление о том, как это сделать.
Большое спасибо!
Update
Я сделал фиктивный Info и пытался подражать что-то похожее на данных выше и сериализации сам. То, что я получаю, это прежде всего 153 спереди (id для фиксированного массива с 9 элементами), что имеет смысл, я забыл об этом, но и элементы находятся в другом порядке.
похоже, что они в алфавитном порядке! Есть ли способ отображать/десериализовать их, как они упорядочены в классе, или мне нужно изменить имена моих полей на awX, bwY, cwMXCount ... Есть ли какой-нибудь флаг для десериализации их определенным образом?
Хорошо написанный первый вопрос. Но вместо того, чтобы редактировать его, чтобы включить в него ответ, лучше [ответить на свой вопрос] (http://stackoverflow.com/help/self-answer). Таким образом, другие читатели могут быстро сказать, что проблема решена. – dbc
@dbc Спасибо. Не знал, что ответ на ваш собственный вопрос был возможен, и он искал кнопку «решила». Я отправил ответ сейчас и помечаю его как решение, как только смогу – Lucahk