for << << b1::size(2), b2::size(3), b3::size(3) >> <- "hello" >>, ...> do: "0#{b1}#{b2}#{b3}" ["0150", "0145", "0154", "0154", "0157"]
1) h ascii码的10进制对应值是 104
2 ) 104 转换成 二进制 01101000
3 ) 按照这个模式 b1::size(2), b2::size(3), b3::size(3) b1 占2位 01转换成十进制为1, b2占3位 101 转换成十进制为5, b3占3位 000 转换成十进制为0
4) 所以 按照 "0#{b1}#{b2}#{b3}" 方式返回 "0150" , 就是["0150"]
例子2
bin = <<3 :: size(2), 5 :: size(4), 1 :: size(2)>>
<<213>>
3的二进制是 11 , size(2)表示2个比特位, 所以11保留
5的二进制位是101 ,size(4)表示占4个比特位 ,所以还不够用0补位,最后是 0101
1的二进制位是01 size(2)表示占2个比特位, 所以用还是01
最后合起来二进制是 11010101 ,十进制是213