0
def deflate(string, level)
z = Zlib::Deflate.new(level)
dst = z.deflate(string, Zlib::NO_FLUSH)
z.close
return dst
end
def inflate(string)
zstream = Zlib::Inflate.new
buf = zstream.inflate(string)
zstream.finish
zstream.close
return buf
end
a = deflate("asasasas",6)
p a
p inflate(a)
給我就行的Zlib膨脹緩衝區錯誤
zstream.finish
爲什麼是一個緩衝區錯誤?我相信Ruby 1.8.7。
如果我使用Zlib :: Inflate.inflate(a)它會引發緩衝區錯誤。這就是爲什麼我決定寫這些方法。現在,當我使用Zlib :: FINISH而不是zstream.finish時,只是返回一個空字符串。 – Voldemort 2012-04-09 04:17:22
我測試過它對1.9.2。也許它在不同的ruby版本上有不同的表現?正如你剛纔所說的那樣,你是否在使用1.8.7? – 2012-04-09 16:44:41
剛剛在1.8.7上測試過它,它工作(使用** ruby -rzlib -e'p Zlib :: Inflate.inflate(Zlib :: Deflate.deflate(「asasasas」,6))** **)走着瞧吧。 – 2012-04-09 16:48:40