特定のファイルの7番目(またはそれ以降)のバイトと最後のバイトの両方を出力します。私はruby
コマンドを使ってコマンドラインでこれを行いたいと思います。 (私はMac OS X上ですが、それは問題ではありません)ファイルのn番目のバイトと最後のバイトを出力する
どうすればいいですか?
puts byte_array * " "
特定のファイルの7番目(またはそれ以降)のバイトと最後のバイトの両方を出力します。私はruby
コマンドを使ってコマンドラインでこれを行いたいと思います。 (私はMac OS X上ですが、それは問題ではありません)ファイルのn番目のバイトと最後のバイトを出力する
どうすればいいですか?
puts byte_array * " "
:
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:ここでは
ここで重要なことは、 'f.seek(7)'が実際に8tバイトに移動することです。バイトはゼロインデックスされます。 –
は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.)
なぜbase64でエンコードするのですか?値を16進数で表示する方がはるかにクリーンです。 –
ああ、そうです。それはさらに良いでしょう。 – Enchilada