Exemplo n.º 1
0
        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));
        }