@Drottarutarnum
Любопытный любитель

Как копировать ReadOnlySpan со смещением?

Нужно скопировать данные из ReadOnlySpan в массив, у ReadOnlySpan есть метод CopyTo, но, к сожалению, в нем нельзя указать смещение, а мне надо копировать в целевой массив не с начала

Пока для теста я делаю так:
ReadOnlySpan<byte> src = new ReadOnlySpan<byte>(new byte[5] { 6, 7, 8, 9, 10 });
byte[] bytes = new byte[10];

Array.Copy(src.ToArray(), 0, bytes, 5, src.Length);


Но из-за src.ToArray() массив байтов создается понапрасну и значительно увеличивает время работы алгоритма, как я могу избежать этого и напрямую копировать из ReadOnlySpan в массив?
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Бери Span от массива, в который ты хочешь записать данные, и бери Slice от него.
var array = new byte[10];
var span = new ReadOnlySpan<byte>(new byte[5]{1,2,3,4,5});
span.CopyTo(array.AsSpan<byte>().Slice(2,5));
// array.Dump(); // 0 0 1 2 3 4 5 0 0 0

Это работает благодаря тому что Span не копирует данные, а берёт указатель на область памяти.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы