/ / Como Zlib inflar uma lista de bytes no Elixir? - zlib, elixir

Como Zlib inflar uma lista de bytes no Elixir? - zlib, elixir

Dado um binário no Elixir que representa um arquivo compactado, como posso passá-los para o zlib de Erlang para inflar?

compressed = <<120, 218, 237, 125, 123, 115, 28, 71, 126, ...>>

Eu tentei:

z = :zlib.open()
uncompressed = :zlib.inflate(z, compressed)
:zlib.close(z)

Erro retornado é:

** (ErlangError) erlang error: :einval
:zlib.call/3
:zlib.inflate/2

Espera um "iodata" como argumento, então talvez eu precise convertê-lo?

Respostas:

12 para resposta № 1

Depois de abrir a porta zlib, você precisa ligar inflateInit sobre isso antes de chamar inflate:

z = :zlib.open()
:zlib.inflateInit(z)
uncompressed = :zlib.inflate(z, compressed)
:zlib.close(z)