位串可以写作<< 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之旅 0006] 二进制位串
时间: 2024-11-05 18:48:48