【发布时间】:2021-01-14 09:58:46
【问题描述】:
在 Docker 中定义了一个 gRPC Python 服务。
我的 PROTO 文件中的服务:
rpc ClientCommand(ClientRequest) returns (ClientResponse){}
“客户端响应”的定义:
message ClientResponse{
int32 request_id = 1;
repeated int32 prediction_status = 2;
repeated string prediction_info = 3;
repeated string prediction_error = 4;
repeated string prediction_result_name = 5;
repeated bytes prediction_result = 6;
repeated bytes prediction_config = 7;
repeated bytes prediction_log = 8;
}
在客户端,我想捕获重复的字节并将它们转换为文件(我知道它更好地与流一起使用,但目前我想这样做)。
重复的字符串和整数我可以完美地转换成 List --> OK
我想转换为 Byte[] 的重复字节。它们的类型:Google.ProtoBuf.Collections.RepeatedField
起初似乎不可能将此类型转换为 Byte[]。 有人可以帮我解决这个问题吗?我的临时解决方案:
byte[] test = new byte[100];
Google.Protobuf.ByteString[] test2 = new Google.Protobuf.ByteString[100];
response.PredictionResult.CopyTo(test2,0);
test2.CopyTo(test,0);
WriteFile(@"C:\programs\file.txt", test);
【问题讨论】:
-
RepeatedField
只是 ByteStrings 的集合。基本上,您只需要遍历所有 ByteString 值,以便将每个 ByteStrings 逐个写入文件中(并且 ByteString 内容可以转换为字节数组,例如 - 将它们写入文件是微不足道的)。
标签: c# type-conversion grpc