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ってホント便利ですね。