Skip to content

Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →

instance method · added in Ruby 4.1

String#bit_get

bit_get(offset, lsb_first: true) → 0, 1, or nil

Returns 0 or 1 for the bit at zero-based bit offset:

Example
s = "\xAA" # 0b10101010
s.bit_get(0) # => 0
s.bit_get(1) # => 1

Returns nil if offset is beyond the end of self:

Example
s.bit_get(8) # => nil

By default, bits within each byte are numbered from least-significant to most-significant. If lsb_first is false, byte order is unchanged but bits within each byte are numbered from most-significant to least-significant:

Example
s.bit_get(0, lsb_first: false) # => 1
s.bit_get(1, lsb_first: false) # => 0

Raises IndexError if offset is negative. Raises ArgumentError if offset is too large to be represented. Raises ArgumentError if lsb_first is neither true nor false.

Ruby version changes

  1. 4.1