zipフォーマット

仕様書
を読みながらunpackしたりして遊んでみた。

io = File.open("test.zip", "rb")
#header
header = io.read(30)
headers = header.unpack("VvvvvvVVVvv")
# file name
puts io.read(headers[9])
# extra field
io.read(headers[10])
# data
data = io.read(headers[7])
# decompress
z = Zlib::Inflate.new(-Zlib::MAX_WBITS)
open("test.jpg", "wb") do |f|
  f.write z.inflate(data)
end

無駄にハマった・・・
windowsでbinmodeを忘れてた。。
しかしライブラリを作る人達はエライですね。