Erlang位语法理解

ste*_*emm 2 erlang bit-manipulation

我有一个问题,理解为什么实际上需要"单位大小"块.

我可以打字:

1> << Y:4/integer-unit:8 >> = << 1,2,3,4 >>.
<<1,2,3,4>>
2> Y.                                       
16909060
Run Code Online (Sandbox Code Playgroud)

但我可以在不指定单位大小的情况下得到相同的结果:

3> << X:32/integer >> = << 1,2,3,4 >>.      
<<1,2,3,4>>
4> X.
16909060
Run Code Online (Sandbox Code Playgroud)

所以,请告诉我情况,当我可以获得使用"单位大小"块的真正好处.

谢谢

ste*_*emm 5

我找到了案例,当需要"单位大小"块时:

如果你需要读取下一个块的比特流大小,并匹配它

这个例子应该说明问题:

1> << Length, Value:(Length*8)/integer >> = << 2, 256:16 >>.   
* 2: illegal bit size
Run Code Online (Sandbox Code Playgroud)

但是你可以使用"单位大小"块简单地做到这一点:

2> << Length, Value:Length/integer-unit:8 >> = << 2, 256:16 >>.
<<2,1,0>>
3> Value.
256
Run Code Online (Sandbox Code Playgroud)