2
我試圖讀取具有可變大小的塊的二進制文件。每個塊的大小位於每個塊開始處的固定位置。用紅寶石閱讀大小不同的二進制文件
該文件是由這樣的:
- 主標題=前20個字節的文件
- 主頭之後的來所有塊。
- 每個塊都有一個16字節的標頭
- 塊標頭之後的4個字節表示塊的大小。
我現在有下面的代碼提取主頭和塊頭,大小和第一大塊數據,但我新手, 相當的和我被困在如何重複這一過程對所有的塊。
請有人幫我請個案。
FILENAME="file.bin"
open(FILENAME, "rb") do |z|
mainheader = z.read(20).unpack('H*')
puts mainheader
puts "############### Chunk No. 1 ######################"
chunkheader = z.read(16)
chunksize = z.read(4).unpack('H*')[0].hex
data = z.read(chunksize).unpack('H*')
puts chunkheader.unpack('H*')
puts chunksize
puts data
end
嗨mudasobwa,非常感謝您的幫助和答覆。它看起來修改很小,但是當有人不知道像我一樣被卡住了。它似乎工作正常,如果文件比最後一個塊大小說的字節少,沒有錯誤發生,只打印可用的字節數。 –
很酷,歡迎。 – mudasobwa