仕事で使えないかと思ってちょっと勉強してみました。 http://www.ruby-lang.org/ja/man/ http://www.namaraii.com/rubytips/ この辺見てとりあえず書いてみたスクリプト。 --- f = open(ARGV.shift, "rb") #バイナリ読み
len = ARGV.shift.to_i if len==0 len = f.stat.size end data = f.read(len) len = data.size
for i in 0..(len-1)/16 #アドレス printf("%08x ", i*16) #バイナリ出力 for j in 0..15 if (len > i*16+j) printf(" %02x", data[i*16+j]) else printf(" ") end end print " " #テキスト出力 for j in 0..((len < i*16+15)?((len-1)%16):15) if (len > i*16+j)&&(data[i*16+j]) >= 0x20 printf("%c", data[i*16+j]) else printf(" ") end end print "\n" end