整数型数据在写入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来排列的。