我最近在阅读有关Erlang二进制表示的内容,并需要实现二进制协议。以下是另一个Erlang二进制表示方面的问题。
如果我正确理解类型说明符,那么对于“float”类型值,8字节表示似乎很好(这是在64位Win7上的情况)。
1> <<A1/binary>> = <<12.3214/float>>.
<<64,40,164,142,138,113,222,106>>
然而,让我困惑的是,“整数”类型值的二进制表示。
2> <<A2/binary>> = <<32512/integer>>.
<<0>>
3> <<A3/binary>> = <<232512518/integer>>.
<<6>>
4> <<A5/binary>> = <<80/integer>>.
<<"P">>
为什么所有这些都用1字节表示?有人可以解释一下吗?
<<N:32/integer>>
,则默认为大端序而不是小端序(许多协议使用大端序=网络字节顺序)。但是,您可以指定大小端或本机的字节顺序。请参见http://www.erlang.org/doc/reference_manual/expressions.html#id77409。 - Peer Stritzinger