首页 > 代码库 > [Erlang之旅 0006] 二进制位串
[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().ok56> Red = 2.257> Green = 61.6158> Blue =20.2059> 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, 18061> R1.262> G1.6163> B1.2064> 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>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。