class PureRubyZip::Bitstream

Attributes

bit_index[RW]
byte[RW]
file[RW]

Public Class Methods

new(data) click to toggle source
# File lib/pure_ruby_zip.rb, line 18
def initialize(data)
  @data = data
  @bit_index = 0
end

Public Instance Methods

read_bit() click to toggle source
# File lib/pure_ruby_zip.rb, line 22
def read_bit
  res = ((@data[0].codepoints.first >> @bit_index) & 1) == 1
  if @bit_index == 7
    @data = @data[1..-1]
    @bit_index = 0
  else
    @bit_index += 1
  end
  res
end
read_int(n_bits) click to toggle source
# File lib/pure_ruby_zip.rb, line 32
def read_int(n_bits)
  res = 0
  (0..(n_bits - 1)).each { |i| res += (read_bit ? 1 : 0) << i }
  res
end