Копировать / установить один байт в памяти <byte> - PullRequest
0 голосов
/ 07 января 2019

Я начинаю с System.Buffers.MemoryPool<T> и System.Memory<T> в C #, пытаясь уменьшить выделение для байтовых массивов.

У меня есть набор байтов и байтовых массивов, которые мне нужно скопировать в один байтовый массив (для использования в методе, который работает только с byte[], а не Span / Memory). Я делаю что-то вроде этого:

byte aByte = 0x01;
byte[] aByteArray = { 0x02, 0x03, 0x04 };
byte[] anotherByteArray = { 0x05, 0x06, 0x07 };

using (var buffer = MemoryPool<byte>.Shared.Rent(7))
{
    Span<byte> target;

    target = buffer.Memory.Slice(0, aByteArray.Length).Span;
    aByteArray.CopyTo(target);

    target = buffer.Memory.Slice(aByteArray.Length, anotherByteArray.Length).Span;
    aByteArray.CopyTo(target);

    // How to copy a single byte?
}

Итак, я выяснил, как скопировать байтовые массивы в буфер, но не могу понять, как установить один байт. Я пытался buffer.Memory.Span[0] = aByte, но Span не имеет установщика.

1 Ответ

0 голосов
/ 07 января 2019

После прочтения комментария @ PetSerAl я проверил, и на самом деле не было ошибки во время компиляции - только предупреждение, отображаемое в Visual Studio. ReSharper позволил мне понять, что, по-видимому, является ошибкой.

Я должен был подумать, чтобы проверить это, поскольку ReSharper уже много раз подводил меня с новыми функциональными возможностями C #, такими как Span<T> и Memory<T>: /

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