[Erlang脚印 0006] 二进制位串

     位串可以写作<< E1,E2....En>>,其中双小于号和双大于号之间可以包含零个或多个区段指示符,位串以比特位为单位的整体长度。区段指示符可以为以下形式之一:

     Data | Data:Size | Data/TypeSpecifiers | Data:Size/TypeSpecifiers

     TypeSpecifiers :  主要控制区段编解码的细节,它由一个或多个由(-)分隔的原子组成,例如 integer-unsigned-big 原子出现的顺序不重要,可以用的指示符如下,这些指示符可以有多种组合方式,但是每一组,只能出现一个。bits是bitstring的别名,bytes是binary的别名。对于integer、float、bitstring类型,尺寸单位是1比特位,binary是8比特位

      integer | float | binary | bytes | bitstring | bits | utf8 | utf16 | utf32

      signed | unsigned

      big | little | native

55> f().
ok
56> Red = 2.
2
57> Green = 61.
61
58> Blue =20.
20
59> Mem = <<Red:5, Green:6, Blue:5>>.
<<23,180>>
60> <<R1:5, G1:6, B1:5>> = Mem.    %% 表示R1 取5bit, G1取6bit, B1 取5bit
<<23,180>>   00010 111|101 10100  %%前面5位是R1=2,中间6位是G1=61, 后面5位B1=20, 由于是8bit表示一位所以,最后的组合是23, 180
61> R1.
2
62> G1.
61
63> B1.
20
64> A=list_to_binary("CC002801").

<<"CC002801">>

65> <<B:2/binary,C:4/binary,_>> = A.

** exception error: no match of right hand side value <<"CC002801">>

66> <<B:2/binary,C:4/binary,_/binary>> = A.    %%B取2个单位,每单位为binary ,C取4单位,每单位binary

<<"CC002801">>

67> B.

<<"CC">>

68> C.

<<"0028">>

69>
posted @ 2014-07-17 14:12  懒惰菜鸟  阅读(446)  评论(0编辑  收藏  举报