读书人

erlang 位语言演算 备忘

发布时间: 2012-10-12 10:17:04 作者: rapoo

erlang 位语言运算 备忘

整数型数据在写入binary时默认占1bit,所以要写入int,big int 一定要指定size。

实例:

Number = 6000.

<<Number>> =:= <<"p">> =:= <<112>> =:= <<6000>>

这几种结果竟然是相同的。因为<<Number:32>> =:= <<0,0,23,112>>,<<Number:1>>的运算结果就是把最后一位<<112>>写入。

?

正确意图的写法:

<<Number:32/integer>> or <<Number:32/big-unsigned-integer>> or 长整数:<<Number:64/integer>>

?

?让我不解的是在整数运算里:32指的是bit,但是在其他类型时,size指的是byte,例如:

Bin = <<"aaa">>.??????? Num = 6000.

B =<<Bin:3/binary>>???N=<<Num:32/integer>>.

3= size(B).???? ????????????? 4 = size(N).

?

呵呵,看似有些相悖,但是仔细按照binary 数据来考虑,又很合理。数值在binary中就是按照位来排列的,而String等类型是按照byte来排列的。

读书人网 >编程

热点推荐