Эффективный способ преобразования протобуфа повторяющегося значения двойного измерения в массив - PullRequest
1 голос
/ 26 апреля 2020

Я отправляю данные через массив двойной размерности 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();

Это не так "хорошенький". Есть ли еще более эффективный способ сделать это?

1 Ответ

0 голосов
/ 26 апреля 2020

Поскольку это прямоугольник angular (комментарии), эффективный способ сделать это - преобразовать данные в обычный плоский вектор объединенного размера и, по существу, передать:

message IntArray{
    repeated int32 IntVal=1 [packed=true];
    int32 Width=2;
}

Высота подразумевается общий размер, деленный на ширину. Упакованное кодирование здесь также важно, хотя теперь оно может быть неявным / автоматическим c в зависимости от того, какой именно инструмент вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...