如何Zlib膨胀Elixir中的字节列表?

Don*_*ter 6 zlib elixir

给定Elixir中代表压缩文件的二进制文件,如何将它们传递给Erlang的zlib来进行膨胀?

compressed = <<120, 218, 237, 125, 123, 115, 28, 71, 126, ...>>
Run Code Online (Sandbox Code Playgroud)

我试过了:

z = :zlib.open()
uncompressed = :zlib.inflate(z, compressed)
:zlib.close(z)
Run Code Online (Sandbox Code Playgroud)

返回的错误是:

** (ErlangError) erlang error: :einval
               :zlib.call/3     
               :zlib.inflate/2
Run Code Online (Sandbox Code Playgroud)

期待一个"iodata"作为一个论点,所以也许我只需要转换它?

leg*_*cia 13

打开zlib端口后,需要在调用inflateInit之前调用它inflate:

z = :zlib.open()
:zlib.inflateInit(z)
uncompressed = :zlib.inflate(z, compressed)
:zlib.close(z)
Run Code Online (Sandbox Code Playgroud)

  • 放气时遇到同样的问题.在放气之前需要调用`deflateInit`. (2认同)
  • 我正在做这件事; :zlib.inflate返回一个io列表...一个必须组合的二进制文件列表.我使用了Enum.into(未压缩,<< >>). (2认同)