static void ReadString(ref FastStream fs) { var isEmpty = fs.Slice(1)[0] == 1; if (isEmpty) { fs.Push(String.Empty); return; } var length = (int)fs.Slice(1)[0]; if (length == 255) { length = BitConverter.ToInt32(fs.Slice(sizeof(int))); } Span <char> str = stackalloc char[length]; var slice = str; var diff = fs._ptr + length - fs._read; while (diff > 0) { length = diff; Utf8.ToUtf16(fs._span.Slice(fs._ptr), slice, out _, out var written); slice = slice.Slice(written); fs.HotSwap(); diff = fs._ptr + length - fs._read; } { Utf8.ToUtf16(fs.Slice(length), slice, out _, out var written); fs.Push(new string(str)); } }