[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>

你可能感兴趣的:(erlang)