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

instance method String#bit_get

bit_get(offset, lsb_first: true) -> Integer | nilRuby 4.1 から[permalink][rdoc][edit]

0 から数えたビット位置 offset のビットを 01 の整数で返します。

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

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

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

[SEE_ALSO] String#bit_set?, String#getbyte