Challenge19.BitWriter.Add C# (CSharp) Method

Add() public method

public Add ( int v, int bits ) : void
v int
bits int
return void
        public void Add( int v, int bits )
        {
            for ( int i = bits - 1; i >= 0; i-- )
            {
                uint bit = (uint) ( v >> i ) & 1;

                _buffer.Enqueue( bit );

                while ( _buffer.Count >= 8 )
                    write();
            }
        }

Usage Example

        public static void Main( string[] args )
        {
            int[] values = GetInputValues( Console.ReadLine() );

            BitWriter writer = new BitWriter();

            int last = values[0];
            writer.Add( 1, 1 );
            writer.Add( last, 32 );

            for ( int i = 1; i < values.Length; i++ )
            {
                int v = values[i];
                int diff = v - last;

                if ( diff >= 16 || diff <= -17 )
                {
                    writer.Add( 1, 1 );
                    writer.Add( v, 32 );
                }
                else
                {
                    writer.Add( 0, 1 );
                    writer.Add( diff, 5 );
                }

                last = v;
            }

            PrintBase64Output( writer.ToString() );
        }