我正在特别阅读ejabberd资料ejabberd_http.erl
。
在下面的代码中,
...
case (State#state.sockmod):recv(State#state.socket,
min(Len, 16#4000000), 300000)
of
{ok, Data} ->
recv_data(State, Len - byte_size(Data), <<Acc/binary, Data/binary>>);
...
什么16#4000000
意思
我已经在Erlang Shell中对此进行了测试。
%%erlang shell
...
7>16#4000000.
67108864
8>is_integer(16#4000000).
true
我知道这只是一个整数值。
16#4000000
代替代替有什么好处67108864
吗?
在Erlang中,#之前的数字是整数基数。在您的示例中,16#4000000
表示的十六进制表示形式67108864
。在其他语言中,它通常表示为0x4000000
。
使用十六进制表示的一个原因是因为每个数字代表4位,例如16#F
是16
(十进制),或1111
二进制。在进行二进制处理时,使用基数16使人类读者更易于处理和理解。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句