2011-02-04 12 views
5

Tengo una cadena de bits erlang basada en la representación de red de una dirección MAC, p. <<255,0,0,0,0,1>>, y me gustaría convertirlo a un número entero. ¿Cuál es la forma más eficiente de hacer esta conversión?Erlang cadena bits a conversión entera

Gracias, Matt.

Respuesta

13

Leer en:

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

A pesar de que no coincide con el número que desea. Tal vez debido a un error de redondeo de coma flotante?

1

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

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

Por ejemplo.

+0

Creo que quizás no estaba claro, quiero convertir a un solo número de 48 bits, no a una lista de números. En el caso anterior, quiero que la respuesta sea 280375481860097 – mpm

14

Usted puede elegir la cantidad de datos de empacar/partido mediante el uso de las :Size y -unit:N opciones:

1> <<X:6/integer-unit:8>> = <<255,0,0,0,0,1>>. 
<<255,0,0,0,0,1>> 
2> X. 
280375465082881 

O más dinámica:

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 

con estos tamaños variables, se puede descomprimir o menos lo que quieras.

+2

No escuches a este tipo, da TERRIBLE RECOMENDACIÓN: P –

+0

Gran respuesta, pero DÉ RESPUESTAS DE MALDITO, que solo puedo suponer que es tu enemigo mortal, te gané a por 1 minuto. – mpm

+0

va a votar por este terrible consejo solo para igualar el puntaje – keymone