c ++中的Google protobuf SerializeToString函数和c#中的WriteTo函数

时间:2016-10-12 11:02:54

标签: c# c++ visual-studio protocol-buffers protobuf-csharp-port

我想在c#和c ++中使用google protobuf。我使用protobuf-csharp-port在c#中生成代码.c ++和c#中的protobuf代码是从同一个.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#c​​ode:

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();

我想将对象序列化为字符串,所以我在c ++中使用了SerializeToString函数,在c#中使用了WriteTo函数。喜欢这个:

c ++代码:

getTokenReq.SerializeToString(&strBody);

c#c​​ode:

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

然而,c ++中strBody的结果与c#中的结果不同。为什么我该怎么做。 c++ value:

c# value:

0 个答案:

没有答案