2015-02-11 81 views
2

我正在写一个比特流到base64编码器,它的赫克,似乎无法找到一种方式来访问原始位。从二进制获取位

说我有位串:

0100 1101 0110 0001 0110 1110 

代表在灵药为:

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

我需要访问该位串中的6位块,以它编码为base64。一个人会怎么做?我没有很多使用原始二进制文件的经验,所以我可能会天真地做这件事。

回答

5

您可以任意采取从二进制个体位组:

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] 
+0

完美,谢谢! – greggreg 2015-02-12 04:00:00

3

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

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

或'Base.encode64(“Man”)' – sasajuric 2015-02-11 21:58:45

+1

啊不知道那个,谢谢! – 2015-02-12 05:13:27