例えば、01000001 01000010 01000011
というbit配列をファイルに書き込みたいとする。
(予備知識1) array#pack
以下のように、配列の中の各Intgerを、それに対応するcharにマッピングする。
[29] pry(main)> [65, 66, 67].pack("C*")
=> "ABC"
(予備知識2) Integerを、bit配列チックに書く方法
Integerを、bit配列チックに書くには以下のようにすれば2進数表記(0b
)を使えば良い。
[30] pry(main)> 0b01000001
=> 65
bit配列をファイルに書き込む方法
[23] pry(main)> [0b01000001, 0b01000010, 0b01000011].pack("C*")
=> "ABC"
これをファイルにバイナリモードで(?)書き込んでやれば良い。つまり、
[32] pry(main)> File.open("file", "wb") do |f|
[32] pry(main)* f.write([0b01000001, 0b01000010, 0b01000011].pack("C*"))
[32] pry(main)* end
=> 3
c
の説明をしておく。
今回は、それぞれの0bxxxxxxxx
を1byteにマッピングする必要があるので、C=unsigned char (8bit 符号なし整数)
を使用した。