erlang 二进制总结

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值