AcoustID.Util.BitStringReader.Read C# (CSharp) Method

Read() public method

public Read ( int bits ) : uint
bits int
return uint
        public uint Read(int bits)
        {
            if (m_buffer_size < bits)
            {
                if (m_value_iter < m_value.Length)
                {
                    m_buffer |= (uint)(m_value[m_value_iter++] << m_buffer_size);
                    m_buffer_size += 8;
                }
                else
                {
                    m_eof = true;
                }
            }

            uint result = (uint)(m_buffer & ((1 << bits) - 1));
            m_buffer >>= bits;
            m_buffer_size -= bits;

            if (m_buffer_size <= 0 && m_value_iter == m_value.Length)
            {
                m_eof = true;
            }

            return result;
        }

Usage Example

Exemplo n.º 1
0
        public void TestAvailableBitsAndEOF()
        {
            byte[] data = { unchecked((byte)-120), unchecked((byte)6) };
            BitStringReader reader = new BitStringReader(Base64.ByteEncoding.GetString(data));

            Assert.AreEqual(16, reader.AvailableBits());
            Assert.AreEqual(false, reader.Eof);

            reader.Read(3);
            Assert.AreEqual(13, reader.AvailableBits());
            Assert.AreEqual(false, reader.Eof);

            reader.Read(3);
            Assert.AreEqual(10, reader.AvailableBits());
            Assert.AreEqual(false, reader.Eof);

            reader.Read(3);
            Assert.AreEqual(7, reader.AvailableBits());
            Assert.AreEqual(false, reader.Eof);

            reader.Read(7);
            Assert.AreEqual(0, reader.AvailableBits());
            Assert.AreEqual(true, reader.Eof);

            Assert.AreEqual((uint)0, reader.Read(3));
            Assert.AreEqual(true, reader.Eof);
            Assert.AreEqual(0, reader.AvailableBits());
        }
All Usage Examples Of AcoustID.Util.BitStringReader::Read