2012-03-10 11 views
0

特定のファイルの7番目(またはそれ以降)のバイトと最後のバイトの両方を出力します。私はrubyコマンドを使ってコマンドラインでこれを行いたいと思います。 (私はMac OS X上ですが、それは問題ではありません)ファイルのn番目のバイトと最後のバイトを出力する

どうすればいいですか?

puts byte_array * " " 
+0

なぜbase64でエンコードするのですか?値を16進数で表示する方がはるかにクリーンです。 –

+0

ああ、そうです。それはさらに良いでしょう。 – Enchilada

答えて

1

require 'Base64' 
file = File.open("temp.txt", "r") 
byte_array = [] 
file.seek(6) # go to 7th byte 
byte_array << file.getbyte 
file.seek(file.size - 1) 
byte_array << file.getbyte 
Base64.encode64(byte_array.pack('c*')) 

明示的にbase64エンコードを使用しない場合、あなたはまた、そのようなバイト値を印刷することができEDIT:ここでは

+0

ここで重要なことは、 'f.seek(7)'が実際に8tバイトに移動することです。バイトはゼロインデックスされます。 –

1

はbase64エンコードのコードがありますこれは、各バイトの整数値を出力します。これは、ベース64での印刷要求よりも少しわかりやすいものです。

arr = [] 

f = File.new("/tmp/test.txt") 
# "This is a test sentence.\n" 

f.seek(7) 
# => 0 

arr << f.readbyte 
# => [32] (The space between 'is' and 'a'.) 

f.seek(-1, IO::SEEK_END) 
# => 0 

arr << f.readbyte 
# => [32, 10] (The newline at the end of the file.) 
関連する問題