将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;
}

高度等于总尺寸除以宽度。打包编码在这里也很重要,尽管这现在可能是隐式/自动的,具体取决于您使用的工具。