【问题标题】:How to Zlib inflate an list of bytes in Elixir?如何 Zlib 在 Elixir 中扩充字节列表?
【发布时间】:2015-10-09 12:54:37
【问题描述】:

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

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

我试过了:

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

返回的错误是:

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

需要一个“iodata”作为参数,所以也许我只需要转换它?

【问题讨论】:

  • 看来您需要先致电:zlib.inflateInit(z)。至少对我来说,这给了我:data_error 而不是:einval
  • 哇,就是这样,谢谢。如果你想让它成为一个答案,我会接受它。 :)

标签: zlib elixir


【解决方案1】:

打开zlib端口后,需要在其上调用inflateInit,然后再调用inflate

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

【讨论】:

  • 放气也有同样的问题。放气前需要致电deflateInit
  • 我正在做这件事; :zlib.inflate 返回一个 io 列表......必须组合的二进制文件列表。我使用 Enum.into(uncompressed, >).
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
相关资源
最近更新 更多