У меня есть (ReadOnly)Span<byte>
, из которого я хочу декодировать строку.
Только в .NET Core 2.1 У меня есть новая перегрузка для декодирования строки из нее без необходимости копировать байты:
Encoding.GetString(ReadOnlySpan<byte> bytes);
В .NET Standard 2.0 и .NET 4.6 (которые я также хочу поддерживать) у меня есть только классические перегрузки:
Encoding.GetString(byte[] bytes);
Encoding.GetString(byte* bytes, int byteCount);
Для первой требуется копия байтовв массив, которого я хочу избежать.
Второй требует байтового указателя, поэтому я подумал о том, чтобы получить его из моего диапазона, например
Encoding.GetString(Unsafe.GetPointer<byte>(span.Slice(100)))
... но мне не удалось найти реальный метод длятот.Я попытался void* Unsafe.AsPointer<T>(ref T value)
, но я не могу передать диапазон для этого и не нашел другого метода, работающего с указателями (и диапазонами).
Возможно ли это вообще, и если да, то как?