2011-02-04 53 views
5

我有一個基於MAC地址網絡表示的erlang位串, <<255,0,0,0,0,1>>,並希望將其轉換爲整數。什麼是最有效的轉換方式?Erlang位串到整數轉換

謝謝, 馬特。

回答

13

讀出來:

2> <<N:48/integer>> = <<255,0,0,0,0,1>>. 
<<255,0,0,0,0,1>> 
3> N. 
280375465082881 

雖然它不匹配你想要的號碼。也許是由於一些浮點舍入錯誤?

1

1> binary_to_list(< < 255,0,0,0,0,1 >>)。

[255,0,0,0,0,1]

例如,

+0

我想也許我不清楚 - 我想轉換爲單個48位數字,而不是數字列表。在上面的情況下,我想答案是280375481860097 – mpm 2011-02-04 15:38:58

14

你可以選擇你有多少數據包/匹配使用:Size-unit:N選項:

1> <<X:6/integer-unit:8>> = <<255,0,0,0,0,1>>. 
<<255,0,0,0,0,1>> 
2> X. 
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 

使用這些變量的大小,你可以解壓幾乎任何你想要的。

+2

不要聽這個人,他給出可怕的建議:P – 2011-02-04 15:55:49