2012-03-10 103 views
0

我想打印第7個(或其他)字節和特定文件的最後一個字節。我想通過命令行使用ruby命令來執行此操作。 (我在Mac OS X上,但應該沒關係。)打印出第n個字節和文件的最後一個字節

我該怎麼做?

+0

爲什麼base64編碼它?以十六進制打印值會更清晰。 – 2012-03-10 12:46:02

+0

啊,你說得對。那會更好。 – Enchilada 2012-03-10 12:49:06

回答

1

這會打印出每個字節的整數值,這比您在base 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.) 
+0

這裏需要注意的是'f.seek(7)'實際上會移動到8t字節。這些字節是零索引。 – 2012-03-10 16:43:27

1

這裏是Base64編碼的碼:

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編碼做,那麼你還可以打印字節值這樣的:

puts byte_array * " " 
相關問題