Ruby 4.1 リファレンスマニュアル

instance method String#bit_set?

bit_set?(offset, lsb_first: true) -> bool | nilRuby 4.1 から[permalink][rdoc][edit]

0 から数えたビット位置 offset のビットが立っているかどうかを真偽値で返します。

offsetself の範囲を超える場合は nil を返します。

既定では、各バイト内のビットは最下位ビット(LSB)から最上位ビット(MSB)の順に番号が付きます。lsb_firstfalse を指定すると、バイトの並び順はそのままに、各バイト内のビット番号だけが最上位ビット(MSB)から最下位ビット(LSB)の順になります。

[PARAM] offset:
調べるビットの位置を 0 から数えた整数で指定します。
[PARAM] lsb_first:
バイト内のビットの番号の付け方を指定します。既定は true(最下位ビットが 0 番目)です。false を指定すると最上位ビットが 0 番目になります。
[RETURN]
offset のビットが立っていれば true、立っていなければ false を返します。offsetself の範囲を超える場合は nil を返します。
[EXCEPTION] IndexError:
offset が負の場合に発生します。
[EXCEPTION] ArgumentError:
offset がビット位置として表現できないほど大きい場合に発生します。
[EXCEPTION] ArgumentError:
lsb_firsttruefalse 以外を指定した場合に発生します。
s = "\xAA".b # 0b10101010
p s.bit_set?(0) # => false
p s.bit_set?(1) # => true
p s.bit_set?(8) # => nil
p s.bit_set?(0, lsb_first: false) # => true
p s.bit_set?(1, lsb_first: false) # => false

[SEE_ALSO] String#bit_get