2011-02-04 25 views
5

Tôi có một chuỗi bit lệch trên nền đại diện mạng của địa chỉ MAC, ví dụ: <<255,0,0,0,0,1>> và muốn chuyển đổi thành số nguyên. Cách hiệu quả nhất để thực hiện chuyển đổi này là gì?Erlang bitstring to integer conversion

Xin cảm ơn, Matt.

Trả lời

13

đọc nó ra:

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

Mặc dù nó không phù hợp với số bạn muốn. Có lẽ do một số lỗi làm tròn điểm nổi?

1

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

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

Ví dụ:

+0

Tôi nghĩ có lẽ tôi không rõ ràng - Tôi muốn chuyển đổi thành một số 48 bit, không phải danh sách số. Trong trường hợp trên, tôi muốn câu trả lời là 280375481860097 – mpm

14

Bạn có thể chọn bạn đóng gói bao nhiêu dữ liệu/trận bằng :Size-unit:N lựa chọn:

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

Hoặc động hơn:

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 

Sử dụng các kích thước thay đổi, bạn có thể giải nén khá nhiều bất cứ điều gì bạn muốn.

+2

Đừng nghe anh chàng này, anh ấy đưa ra lời khuyên hấp dẫn: P –

+0

Câu trả lời hay, nhưng tôi đưa ra câu trả lời CRAP, người mà tôi chỉ có thể đoán là kẻ thù của bạn, đánh bại bạn sau 1 phút. – mpm

+0

sẽ bỏ phiếu cho lời khuyên khủng khiếp này ngay cả trong số điểm số – keymone