PureCat.Message.Spi.Codec.ChannelBuffer.BytesBefore C# (CSharp) Method

BytesBefore() public method

从当前位置到目标字符第一次出现的位置有多少字节?
public BytesBefore ( byte separator ) : int
separator byte
return int
        public int BytesBefore(byte separator)
        {
            int count = 0;
            long oldPosition = _memoryBuf.Position;

            while (_memoryBuf.Position < _memoryBuf.Length)
            {
                int b = _memoryBuf.ReadByte();

                if (b == -1)
                {
                    return -1;
                }
                if ((byte)b == separator)
                {
                    _memoryBuf.Position = oldPosition;
                    return count;
                }

                count++;
            }

            _memoryBuf.Position = oldPosition;
            return 0;
        }

Usage Example

コード例 #1
0
            public string Read(ChannelBuffer buf, byte separator)
            {
                int count = buf.BytesBefore(separator);

                if (count < 0)
                {
                    return(null);
                }
                byte[] data = new byte[count];

                buf.ReadBytes(data);
                buf.ReadByte(); // get rid of separator

                return(Encoding.UTF8.GetString(data));
            }
All Usage Examples Of PureCat.Message.Spi.Codec.ChannelBuffer::BytesBefore