【问题标题】:Get bits from a binary从二进制文件中获取位
【发布时间】:2015-02-12 05:20:54
【问题描述】:

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

假设我得到了位串:

0100 1101 0110 0001 0110 1110

在灵药中表示为:

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

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

【问题讨论】:

    标签: elixir


    【解决方案1】:

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

    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]
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-26
        • 2021-01-03
        相关资源
        最近更新 更多