从二进制文件中获取位

时间:2015-02-11 20:05:43

标签: elixir

我正在将一个比特流写入base64编码器以获得它,并且似乎无法找到访问原始位的方法。

说我有点串:

0100 1101 0110 0001 0110 1110

在长生不老药中代表:

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

我需要以6位的块为单位访问bitstring,以便将其编码为base64。怎么可能这样做?我没有很多使用原始二进制文件的经验,所以我可能会天真地这样做。

2 个答案:

答案 0 :(得分:6)

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

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]

答案 1 :(得分:3)

由于您提到您的最终目标是将位串编码为base64,因此您可以使用the :base64 module

iex> :base64.encode "Man"
"TWFu"