【发布时间】:2015-12-17 15:26:00
【问题描述】:
我正在尝试读取具有可变大小块的二进制文件。每个块的大小位于每个块开头的固定位置。
文件是这样组成的:
- 主标头 = 文件的前 20 个字节
- 在 Main 标头之后是所有块。
- 每个块都有一个 16 字节的标头
- chunk header后面的4个字节代表chunk的大小。
我目前有下面的代码提取主标题和块标题,第一个块的大小和数据,但我很新手, 我被困在如何对所有块重复这个过程。
请有人帮忙处理我的案子。
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
【问题讨论】: