我想在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#code:
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#code:
MemoryStream stream = new MemoryStream();
oReq.WriteTo(stream);
byte[] buffer = stream.ToArray();
string strBody = Encoding.ASCII.GetString(buffer);
然而,c ++中strBody的结果与c#中的结果不同。为什么我该怎么做。 c++ value: