public static StringField DecodingString(Stream stream) { int lengthNeedRead = 0; while (true) { var b = stream.ReadByte(); if (b == _stringSpliter) { break; } lengthNeedRead++; } stream.Position = stream.Position - lengthNeedRead - 1; byte[] lengthBuf = new byte[lengthNeedRead]; stream.EnsureRead(lengthBuf, 0, lengthNeedRead); var lengthStr = Encoding.UTF8.GetString(lengthBuf); if (!int.TryParse(lengthStr, out int length)) { throw new Exception("字符串的长度格式不对"); } stream.ReadByte(); var buf = new byte[length]; stream.EnsureRead(buf, 0, length); var val = Encoding.UTF8.GetString(buf); return(StringField.Create(val, length, buf)); }