Пример #1
0
        public static NumberField DecodingLong(Stream stream)
        {
            var begin = stream.ReadByte();

            if (begin != _startInt)
            {
                throw new Exception("整数开始字节错误");
            }
            int lengthNeedRead = 0;

            while (true)
            {
                var b = stream.ReadByte();
                if (b == _end)
                {
                    break;
                }
                lengthNeedRead++;
            }
            stream.Position = stream.Position - lengthNeedRead - 1;
            byte[] intBuf = new byte[lengthNeedRead];
            stream.EnsureRead(intBuf, 0, lengthNeedRead);
            stream.ReadByte();
            var longStr = Encoding.UTF8.GetString(intBuf);

            if (!long.TryParse(longStr, out long intVal))
            {
                throw new Exception("整数内容的格式错误");
            }
            return(NumberField.Create(intVal));
        }