csvの数値をベタでbyte配列に変換

というわけで、今回はcsvに書かれた符号付き整数をbyteごとに並べるツールを作るので、考えてみた。ちなみにあまりエラー処理は詳しくしていません。元のcsvファイルをきっちり作ることを前提にしています。

require 'csv'

# 読み込むCSVファイル名.
SrcFilename = "data.csv"
# 書き出すバイナリファイル名.
DstFilename = "data.dat"

dstFile = File.open( DstFilename, "wb" )

if dstFile != nil then
  CSV.open(SrcFilename, "r") do | row |
    # 要素が無ければスキップ.
    next if row[0] == nil
    
    # 各要素を数字から数値に変換.
    row.map!{|d| d.to_i}
    
    # 8bit 符号つき整数を書き出す.
    dstFile.write( row.pack("c*") )
  end
  
  dstFile.close
end

ここでポイントとなるのは、map! メソッド。map ではなくて、map! だと、各要素をそれぞれ処理したものに置き換えてくれるのです。
いやー、rubyってホント便利ですね。