将protobuf双维重复值转换为数组的有效方法
Efficient way to convert protobuf double dimension repeated value to array
我通过protobuf双维数组发送数据:
message IntArray{
repeated int32 IntVal=1;
}
message DoubleDimentionIntArray{
repeated IntArray IntArray=1;
}
现在,在客户端,我将数据转换为双维数组:
var data = xProtoClient.GetRecord(_protocolRequest).DoubleDimentionIntArray;
var intArrayList = new List<int[]>();
foreach (var arr in data.IntArray)
{
intArrayList.Add(arr.IntVal.ToArray());
}
return intArrayList.ToArray();
并非如此"pretty"。还有其他更有效的方法吗?
由于这是矩形(注释),执行此操作的有效方法是将数据转换为组合大小的规则平面向量,并且实质上传输:
message IntArray{
repeated int32 IntVal=1 [packed=true];
int32 Width=2;
}
高度等于总尺寸除以宽度。打包编码在这里也很重要,尽管这现在可能是隐式/自动的,具体取决于您使用的工具。
我通过protobuf双维数组发送数据:
message IntArray{
repeated int32 IntVal=1;
}
message DoubleDimentionIntArray{
repeated IntArray IntArray=1;
}
现在,在客户端,我将数据转换为双维数组:
var data = xProtoClient.GetRecord(_protocolRequest).DoubleDimentionIntArray;
var intArrayList = new List<int[]>();
foreach (var arr in data.IntArray)
{
intArrayList.Add(arr.IntVal.ToArray());
}
return intArrayList.ToArray();
并非如此"pretty"。还有其他更有效的方法吗?
由于这是矩形(注释),执行此操作的有效方法是将数据转换为组合大小的规则平面向量,并且实质上传输:
message IntArray{
repeated int32 IntVal=1 [packed=true];
int32 Width=2;
}
高度等于总尺寸除以宽度。打包编码在这里也很重要,尽管这现在可能是隐式/自动的,具体取决于您使用的工具。