Когда я сериализовать этот объект с буферами протокола в Java, я получаю этот байтовый массив:Почему байт [] отличается при сериализации с буферами протоколов для java и protobuf-net?
byte[] topic = Transport.newBuilder()
.setTopic(Topics.ORD)
.setExtension(Ord.command, Commands.INSERT)
.build()
.toByteArray();
// [8,2,16,0]
Когда я делаю то же самое с Protobuf-сеть, я получаю это
var transport = new Transport
{
topic = Topics.ORD,
command = Commands.INSERT
};
var stream = new MemoryStream();
Serializer.Serialize(stream, transport);
byte[] result = stream.ToArray(); // [8,2]
Это вызывает у меня некоторые проблема при использовании zmq и подписки на основе массива bye. Как я могу убедиться, что оба массива будут выглядеть одинаково?
Хорошо, я установил поле в файле proto. Теперь я получаю '[8,2,176,6,0]' в C# и '[8,2, -80,6,0]' в Java – mrt181
@ mrt181, это просто потому, что java подписал байты, а C# имеет неподписанные байты; 176 и -80 - одно и то же (двоичный 10110000) –