1.二进制的数据类型
(1)255以内的整数
(2)字符串
(3)如果字符串中含有引号' " '的话要用转义字符' \" '(<<name: \"haha\", age:18">>)
例如:
(正确):<<2,3,5,6,"12,haha">>
(错误):<<a,b,c,c,e,f>>
------------------------------------------------------------------
2.二进制的语法
<<E1,E2,...,En>>
E1 = Value or
E1 = Value:Size or
E1 = Value/TypeSpecifierList or
E1 = Value:Size/TypeSpecifierList
TypeSpecifierList = End-Sign-Type-Unit(如果没有就是默认值)
End = big|little|native
Sign = signed|unsigned(默认)
Type = integer(默认)|float|binary
重点:En所占的位数(即En整个区块的长度,单位(位))是由Size*Unit决定的
Size和Unit是由Type来决定的
Type =
integer: Size=8, Unit=1 占8字节
Type =
float: Size=64, Unit=1 占64字节
Type =
binary: Size=1,Unit=8 占8字节
------------------------------------------------------------------
例如:
<<E1:8, E2:2, E3:6>> = <<1, 2>>.
应为默认的type是integer,所以默认的Size=8,Unit=1.
E1指明了Size=8,所以E1=8*1,占8位(E1=8)
E2指明了Size=2,所以E2=2*1,占2位(E2=0)
E3指明了Size=6,所以E2=6*1,占6位(E3=2)
<<E1:1/binary,E2/binary>> = <<1,2>>.
指明了type是binary,所以默认的Size=1,Unit=8.
E1指明了Size=1,所以E1=1*8,占8位(E1=<<1>>)
E2表是剩余位的匹配,所以E2表示剩余的8位(E2=<<2>>)
<<E1:2/binary,E2/binary>> = <<1,2>>.
指明了type是binary,所以默认的Size=1,Unit=8.
E1指明了Size=1,所以E1=2*8,占16位(E1=<<1,2>>)
E2表是剩余位的匹配,所以E2表示剩余的0位(E2=<<>>)
------------------------------------------------------------------------
福利:http://www.cnblogs.com/me-sa/archive/2011/12/25/erlang0024.html