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

instance method IO::Buffer#and!

and!(mask) -> selfRuby 3.2 から[permalink][rdoc][edit]
or!(mask) -> self
xor!(mask) -> self

IO::Buffer#& などと同じビット演算を、新しいバッファを作らずに自身に対して行います。self を返します。

mask が自身より短い場合は、mask を先頭から繰り返し使います。

[PARAM] mask:
マスクを IO::Buffer で指定します。
[EXCEPTION] IO::Buffer::MaskError:
mask の大きさが 0 の場合に発生します。
[EXCEPTION] IO::Buffer::AccessError:
読み取り専用のバッファに対して呼び出した場合に発生します。
# IO::Buffer.for はブロックを渡さないと読み取り専用になるので、dup で複製する
buf = IO::Buffer.for("1234567890").dup
buf.and!(IO::Buffer.for("\xFF\x00\x00\xFF"))
p buf.get_string.bytes.map {|b| "%02x" % b }.join(" ")  # => "31 00 00 34 35 00 00 38 39 00"

IO::Buffer.for("1234").and!(IO::Buffer.for("\xFF")) # ~> IO::Buffer::AccessError

[SEE_ALSO] IO::Buffer#&, IO::Buffer#|, IO::Buffer#^