从二进制文件中获取位
Get bits from a binary
我正在将比特流写入 base64 编码器,但似乎无法找到访问原始比特的方法。
假设我有位串:
0100 1101 0110 0001 0110 1110
在长生不老药中表示为:
<<77, 97, 110>> # or the string "Man"
我需要访问 6 位块中的位串,以便将其编码为 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]
既然你提到你的最终目标是将位串编码为base64,你可以使用the :base64
module:
iex> :base64.encode "Man"
"TWFu"
我正在将比特流写入 base64 编码器,但似乎无法找到访问原始比特的方法。
假设我有位串:
0100 1101 0110 0001 0110 1110
在长生不老药中表示为:
<<77, 97, 110>> # or the string "Man"
我需要访问 6 位块中的位串,以便将其编码为 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]
既然你提到你的最终目标是将位串编码为base64,你可以使用the :base64
module:
iex> :base64.encode "Man"
"TWFu"