ファイルから最初の 4 バイト、次の 4 バイト、次の 4 バイト、ファイルから最後の 8 バイトを除くファイル内の残りのバイトを読み取ると仮定して、次のようにコードに正規表現を記述した ruby を使用して 1 つのファイルを読み取っています。現在、次のコードを使用して、これらの可変サイズ データ (.*) からバイトをさらに分割しようとしています。これは正しい方法ですか? 結果が得られていますが、正しいかどうかはまだわかりません。
これは、最初の正規表現の残りのアスタリスク部分の内容を最初にスキャンし、次に 2 番目の正規表現do..end
で残りのバイトを再度スキャンする正しい方法ですか?do..end
File.open(filename,'rb') do |file|
file.read.scan(/(.{4})(.{4})(.{4})(.*)(.{8})/m).each do |a,b,c,d,e|
puts "\Content 1:#{a}\n\n"
b1 = b.unpack("N")
puts "\n\nContent 2:\n#{b1}\n\n"
puts "\n\nContent 3:\n#{c.unpack("N")}\n\n"
d.scan(/(.{4})(.{4})(.{4})(.*)/).each do |p,q,r,s|
puts "\n\nPContent 4:\n#{p.unpack("N")}\t"
puts "Content 5\n:#{q.unpack("e")}\t"
puts "Content 6:\n#{r.unpack("e")}\t"
s.scan(/(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.*)/).each do |f,g,h,i,j,k,l,m,n,o,p|
puts "Content 7:#{f.unpack("e")}"
puts "Content 8:#{g.unpack("B")}"
puts "Content 9:#{h.unpack("B")}"
puts "Content 10:#{i.unpack("B")}"
puts "Content 11:#{j.unpack("e")}"
puts "Content 12:#{k.unpack("e")}"
puts "Content 13:#{l.unpack("e")}"
puts "Content 14:#{m.unpack("B")}"
puts "Content 15:#{n.unpack("B")}"
puts "Content 16:\t#{o}#{p}"
end
end