Erlang位字符串到整数的转换
我有一个基于MAC地址的网络表示形式的erlang位字符串,例如Erlang位字符串到整数的转换,erlang,Erlang,我有一个基于MAC地址的网络表示形式的erlang位字符串,例如,并希望将其转换为整数。进行这种转换最有效的方法是什么 谢谢, 马特。1>二进制列表() [255,0,0,0,0,1] 例如。读出来: 2> <<N:48/integer>> = <<255,0,0,0,0,1>>. <<255,0,0,0,0,1>> 3> N. 280375465082881 2>=。 3> N。 28037546508288
,并希望将其转换为整数。进行这种转换最有效的方法是什么
谢谢,
马特。1>二进制列表()
[255,0,0,0,0,1]
例如。读出来:
2> <<N:48/integer>> = <<255,0,0,0,0,1>>.
<<255,0,0,0,0,1>>
3> N.
280375465082881
2>=。
3> N。
280375465082881
虽然它与您想要的号码不匹配。可能是由于某些浮点舍入错误?您可以使用
:Size
和-unit:N
选项选择打包/匹配的数据量:
1> <<X:6/integer-unit:8>> = <<255,0,0,0,0,1>>.
<<255,0,0,0,0,1>>
2> X.
280375465082881
1>=。
2> 十,。
280375465082881
或者更动态地:
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
3>Bin=。
4> 尺寸=尺寸(箱)。
6.
5> =垃圾箱。
6> 内部的。
280375465082881
使用这些可变大小,您可以解包几乎任何您想要的东西 我想可能我不清楚-我想转换成一个48位的数字,而不是一个数字列表。在上面的例子中,我希望答案是280375481860097别听这个家伙的,他给出了可怕的建议:伟大的答案,但我给出的是蹩脚的答案,我只能假设他是你的死敌,比你快1分钟。我会投票支持这个可怕的建议,只是为了平局吗score@IGIVETERRIBLEADVICE酷。当big-endian在8之前不可偏离时,您能帮助使用解析big-endian->int的通用方法吗。