Beispiel #1
0
        public override bool TryDecode(ReadOnlySpan <byte> encodedBytes, out string text, out int bytesConsumed)
        {
            int len;

            if (!Utf8Encoder.TryComputeStringLength(encodedBytes, out len))
            {
                text          = string.Empty;
                bytesConsumed = 0;
                return(false);
            }

            text = new string(' ', len);

            unsafe
            {
                fixed(char *p = text)
                {
                    var charSpan = new Span <char>(p, len);

                    int written;

                    return(Utf8Encoder.TryDecode(encodedBytes, charSpan, out bytesConsumed, out written));
                }
            }
        }
Beispiel #2
0
        public override bool TryEncode(ReadOnlySpan <byte> utf8, Span <byte> encodedBytes, out int bytesConsumed, out int bytesWritten)
        {
            int charactersWritten;
            var utf16  = encodedBytes.NonPortableCast <byte, char>();
            var result = Utf8Encoder.TryDecode(utf8, utf16, out bytesConsumed, out charactersWritten);

            bytesWritten = charactersWritten * sizeof(char);
            return(result);
        }
Beispiel #3
0
 public override bool TryDecode(ReadOnlySpan <byte> encodedBytes, Span <uint> utf32, out int bytesConsumed, out int charactersWritten)
 {
     return(Utf8Encoder.TryDecode(encodedBytes, utf32, out bytesConsumed, out charactersWritten));
 }