Erlang цепочка битов в целое число - PullRequest
5 голосов
/ 04 февраля 2011

У меня есть строка битов erlang, основанная на сетевом представлении MAC-адреса, например, <<255,0,0,0,0,1>>, и я хотел бы преобразовать его в целое число.Какой самый эффективный способ сделать это преобразование?

Спасибо, Мэтт.

Ответы [ 3 ]

15 голосов
/ 04 февраля 2011

Вы можете выбрать, сколько данных вы упаковываете / сопоставлять, используя опции :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

Используя эти переменные размеры, вы можете распаковать практически все, что захотите.

14 голосов
/ 04 февраля 2011

Прочитайте:

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

Хотя он не соответствует желаемому номеру. Возможно, из-за ошибки округления с плавающей запятой?

1 голос
/ 04 февраля 2011

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

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

Например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...