elixir - 从二进制文件中获取位

标签 elixir

我正在将比特流写入 base64 编码器,但似乎无法找到访问原始比特的方法。

假设我有位串:

0100 1101 0110 0001 0110 1110

在灵药中表示为:

<<77, 97, 110>> # or the string "Man"

我需要访问 6 位 block 中的位串,以便将其编码为 base64。怎么可能做到这一点?我没有很多使用原始二进制文件的经验,所以我可能会天真地处理这个问题。

最佳答案

您可以从二进制文件中任意获取单个位组:

iex(1)> <<a :: 6, b :: 6, c:: 6, d::6>> = <<77, 97, 110>>

iex(2)> [a,b,c,d]
[19, 22, 5, 46]

或者您可以使用 for comprehension :

iex(3)> for <<x :: 6 <- <<77, 97, 110>> >>, do: x
[19, 22, 5, 46]

关于elixir - 从二进制文件中获取位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28463474/

相关文章:

rust - 使用 Elixir 通过 Ports 与 Rust 对话,我哪里出错了?

elixir - 在Phoenix的Elixir中设置暂存环境?

elixir - 在 Elixir 中使用 Timex 解析日期字符串时出现 "Invalid format string"错误

elixir - 如何建立和插入多对多关联

macros - Elixir 宏 : how to define function with dynamic arity

elixir - 在 Elixir 中调用匿名函数 100 次

elixir - 如何读取 Phoenix/Elixir 中的配置变量?

elixir - Ecto 自定义类型 : How do I represent a field in a model as a specific type?

postgresql - 数据库碎片查询错误 "parameters must be of length 0 for query"

elixir - 谁能准确解释一下Plug.Conn中put_private的含义?