Google protobuf функция SerializeToString в c ++ и функция WriteTo в c #

Я хочу использовать google protobuf как на c #, так и на c ++. Я использовал protobuf-csharp-port для генерации кода на c #. Код protobuf на c ++ и c # был сгенерирован из одного файла .proto, и я установил один и тот же объект с тем же значение.

код C ++:

GetTokenReq getTokenReq;
getTokenReq.set_account_name("");
getTokenReq.set_login_type(8);
getTokenReq.set_auth_data("");
getTokenReq.set_is_tourist(1);
getTokenReq.set_password(g_strPwd);

код C #:

GetTokenReq.Builder reqBuilder = new GetTokenReq.Builder();
reqBuilder.SetAccountName(ByteString.CopyFrom("", Encoding.ASCII));
reqBuilder.SetLoginType(8);
reqBuilder.SetAuthData(ByteString.CopyFrom("", Encoding.ASCII));
reqBuilder.SetIsTourist(1);
reqBuilder.SetPassword(ByteString.CopyFrom(g_strPwd, Encoding.ASCII));
GetTokenReq getTokenReq = reqBuilder.Build();

Я хочу сериализовать объект в строку, поэтому я использовал функцию SerializeToString в c ++ и функцию WriteTo в c #. Как это:

код C ++:

getTokenReq.SerializeToString(&strBody);

код C #:

MemoryStream stream = new MemoryStream();
oReq.WriteTo(stream);
byte[] buffer = stream.ToArray();
string strBody = Encoding.ASCII.GetString(buffer);

Тем не менее, результат strBody в C ++ не так, как в C #. Почему и как я могу это сделать.
c ++ значение:

значение c #:

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]