class BitIO def initialize(data) @data = data @byte_offset = 0 @bit_offset = 0 end def getBit if (@data.length < @byte_offset) return -1; end p @data # byte = @data[@byte_offset] byte = @data[0] p byte bit = (byte >> (7 - @bit_offset)) & 1 # Oops if @bit_offset < 8 @bit_offset = @bit_offset + 1 else @byte_offset = @byte_offset + 1 @bit_offset = 0 end bit end end data = "foobaabaz" $io = BitIO.new(data) bit = $io.getBit() printf("%d\n", bit)