Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang位字符串到整数的转换_Erlang - Fatal编程技术网

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

我有一个基于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。
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的通用方法吗。