Erlang位串到整数转换

mpm*_*mpm 5 erlang

我有一个基于MAC地址的网络表示的erlang比特串,例如<<255,0,0,0,0,1>>,并希望将其转换为整数.这种转换最有效的方法是什么?

谢谢,马特.

I G*_*ICE 15

您可以使用:Size和-unit:N选项选择打包/匹配的数据量:

1> <<X:6/integer-unit:8>> = <<255,0,0,0,0,1>>.
<<255,0,0,0,0,1>>
2> X.
280375465082881
Run Code Online (Sandbox Code Playgroud)

或者更动态:

3> Bin = <<255,0,0,0,0,1>>.                 
<<255,0,0,0,0,1>>
4> Size = size(Bin). 
6
5> <<Int:(Size)/integer-unit:8>> = Bin.     
<<255,0,0,0,0,1>>
6> Int.
280375465082881
Run Code Online (Sandbox Code Playgroud)

使用这些可变尺寸,您可以随心所欲地解压缩.

  • 不要听这个家伙,他给出了可怕的建议:P (2认同)

I G*_*ERS 14

读出来:

2> <<N:48/integer>> = <<255,0,0,0,0,1>>.
<<255,0,0,0,0,1>>
3> N.
280375465082881
Run Code Online (Sandbox Code Playgroud)

虽然它与您想要的数字不匹配.也许是由于一些浮点舍入错误?