Rune.DecodeFromUtf8(ReadOnlySpan<Byte>, Rune, Int32) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Декодирует в Rune начале предоставленного исходного буфера UTF-8.
public:
static System::Buffers::OperationStatus DecodeFromUtf8(ReadOnlySpan<System::Byte> source, [Runtime::InteropServices::Out] System::Text::Rune % result, [Runtime::InteropServices::Out] int % bytesConsumed);
public static System.Buffers.OperationStatus DecodeFromUtf8 (ReadOnlySpan<byte> source, out System.Text.Rune result, out int bytesConsumed);
static member DecodeFromUtf8 : ReadOnlySpan<byte> * Rune * int -> System.Buffers.OperationStatus
Public Shared Function DecodeFromUtf8 (source As ReadOnlySpan(Of Byte), ByRef result As Rune, ByRef bytesConsumed As Integer) As OperationStatus
Параметры
- source
- ReadOnlySpan<Byte>
Диапазон байтов в кодировке UTF-8 только для чтения.
- result
- Rune
При возврате методом — расшифрованная руна.
- bytesConsumed
- Int32
Количество байтов, считанных для создания руны, при возврате управления методом.
Возвращаемое значение
Значение Done, если исходный буфер начинается с допустимого скалярного значения в кодировке UTF-8. result
затем содержит декодированный Rune, и bytesConsumed
содержит количество значений Byte, используемых во входном буфере для кодирования Rune.
Значение NeedMoreData, если исходный буфер пуст или содержит только автономный верхний суррогатный символ UTF-8. result
затем содержит ReplacementChar, и bytesConsumed
содержит длину входного буфера.
Значение InvalidData, если исходный буфер начинается с неверно сформированного скалярного значения в кодировке UTF-8. result
затем содержит ReplacementChar, и bytesConsumed
содержит количество значений Byte, используемых во входном буфере для кодирования неправильной последовательности.
.
Комментарии
Общее соглашение заключается в вызове этого метода в цикле, срезая source
буфер по bytesConsumed
элементам в каждой итерации цикла. В каждой итерации цикла содержит реальное скалярное значение, result
если оно успешно декодировано, или содержит Rune.ReplacementChar , если данные не удалось декодировать. Этот шаблон обеспечивает удобную автоматическую подстановку U+FFFD недопустимых последовательностей при итерации по циклу.