2009年07月26日

バイナリ出力(array#pack)

バイナリデータを出力する時は、Array#packを使います。

Array.pack("テンプレート文字列")

でバイナリデータを生成できる。テンプレート文字列はhttp://www.ruby-lang.org/ja/man/html/pack_A5C6A5F3A5D7A5ECA1BCA5C8CAB8BBFACEF3.htmlを参照。

以下はその例、

array_int = [0,1,2,3,4]
array_float = [0.1,1.1,2.1,3.1,4.1]

f = open("hoge.bin","wb")
f.write(array_int.pack("iiiii")) #テンプレート文字列で配列全部の型を指定
f.write(array_int.pack("i*")) #"*"で直前の指定はその後ろ全部に適用
f.write(array_int.pack("f*")) #整数データをfloat型で出力

f.write(array_float.pack("f*")) #浮動小数データをfloat型で出力
f.write(array_float.pack("i*")) #float型のをint型で出力
f.close

f = open("hoge.bin","rb")
p f.read(20).unpack("i*")
p f.read(20).unpack("i*")
p f.read(20).unpack("f*")
p f.read(20).unpack("f*")
p f.read(20).unpack("i*")
f.close

で、実行結果

[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4]
[0.0, 1.0, 2.0, 3.0, 4.0]
[0.100000001490116, 1.10000002384186, 2.09999990463257, 3.09999990463257, 4.09999990463257]
[0, 1, 2, 3, 4]

ちゃんと表示されてますね(小数点以下のデータ精度はおいておいて)。




posted by purigen at 23:43| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2009年07月22日

rubyのデフォルト引数を使った再帰処理

nanto_viさんのブログで、

Ruby ではデフォルト引数内で再帰呼び出しができるだなんてちっとも知りませんでした。

とあり、僕も知りませんでした!っと思って試してみた。
続きを読む
posted by purigen at 23:08| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2009年07月14日

closureをお勉強(ruby編)

javascriptのクロージャー」をやったので、合わせてRubyでもやってみようと。
続きを読む
ラベル:Closure
posted by purigen at 00:56| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。