Method: HexaPDF::Utils::BitStreamReader#read

Defined in:
lib/hexapdf/utils/bit_stream.rb

#read(bits) ⇒ Object

Reads bits number of bits.

Returns nil if not enough bits are available for reading.



79
80
81
82
83
84
85
86
87
88
89
# File 'lib/hexapdf/utils/bit_stream.rb', line 79

def read(bits)
  while @available_bits < bits
    @bit_cache = (@bit_cache << 8) | (@data.getbyte(@pos) || return)
    @pos += 1
    @available_bits += 8
  end
  @available_bits -= bits
  result = (@bit_cache >> @available_bits)
  @bit_cache &= (1 << @available_bits) - 1
  result
end