在Erlang shell中,我可以执行以下操作:
A = 300.
300
<<A:32>>.
<<0, 0, 1, 44>>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试以下内容时:
B = term_to_binary({300}).
<<131,104,1,98,0,0,1,44>>
<<B:32>>
** exception error: bad argument
<<B:64>>
** exception error: bad argument
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,我采用整数并使用bitstring语法将其放入32位字段.这按预期工作.在第二种情况下,我使用term_to_binaryBIF将元组转换为二进制,我尝试使用bitstring语法解压缩某些位.为什么第一个例子有效,但第二个例子失败了?看起来他们都做了非常相似的事情.