2010年02月17日

rubyでバイトオーダー(エンディアン)処理

rubyで、array.pack,unpackを使用してバイトオーダー(エンディアン)処理をします。

packテンプレート文字列

下記サンプルは、
 1.指定エンディアンのファイルを作成
 2.作成したファイルを読み込み、エンディアンに合った形で読み書きする
場合の例です。
続きを読む


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

2009年10月01日

指定ディレクトリ内のファイル名リネーム

ファイルのリネーム作業が膨大に来たので、rubyで処理してみた。

#rename.rb
dir_path = ARGV[0]
src = ARGV[1]
des = ARGV[2]

Dir::glob(dir_path.to_s+"*"+src.to_s+"*.*").each do |f|
File.rename(f,f.gsub(src.to_s,des.to_s))
end

使い方は、

ruby rename.rb 指定ディレクトリパス 置換文字列 置換後文字列

例えば、『同じ階層にある"政権"ディレクトリ内のファイル名を"自民党"から"民主党"に変換する』場合は、

ruby rename.rb ./政権/ 自民党 民主党

でリネーム出来ます。 まあ、大人しくリネームツールを使えという話ではありますが。。。
posted by purigen at 01:04| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする

2009年09月08日

Rubyでディープコピー

Rubyでオブジェクト(配列)を変数に代入すると、「shallow copy(浅いコピー)」されます。
これは、C++で言う参照コピーであり、Cで言うポインタ渡しと同じ挙動です。

◆exp. shallow copy

a = [0,1,2]
b = a
b[1] = 3

p "a = " + a.to_s
p "b = " + b.to_s

実行結果は、

"a = 032"
"b = 032"

となります。『"a = 012"』で無い所に注意が必要。 shallow copyなのでbを変更すると
コピー元のaも変更されます。 では、bを変更しても『"a = 012"』としたい場合はどうするか。
続きを読む
posted by purigen at 00:56| Comment(0) | TrackBack(0) | Ruby | このブログの読者になる | 更新情報をチェックする
×

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