【Ruby】ファイルにバイナリデータを書き込む

外部から取得した整数を32ビットのバイナリ形式でファイルに書く、
ということがやりたかったのだが、リファレンスを読んでも
数値から直接バイナリ配列(のString)を得る方法が見つからなかった。

そのため面倒くさいとは思いつつも複数段階を経て変換を行った(<1>)。

<1>

  hex_string = sprintf("%#010x", number)          #まず16進数の文字列として表す
  2.step(hex_string.bytesize - 2, 2) do |index|   #文字列の頭の"0x"を無視して
    binary_array << hex_string[index, 2].hex.chr  #2文字ずつ取り出し数値に変換、
  end                                             #次に文字列型へ変換

ところが、実はArrayクラスに直接変換するメソッドpackがあることを発見。
packを使うとファイル出力と合わせても3行で終了(<2>)。

<2>

  File.open(filename, 'w+b') do |file|  #"N"はビッグエンディアンの
    file.write([number].pack("N"))      #32bit符号なし整数を指定する
  end                                   #テンプレート文字

数値を1つずつ変換することを考えてたので、Arrayが必要になるとは思わなかった・・・。
IntegerとかStringとかのリファレンスをなめるように読んでも見つからないはずだ。