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.
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.
đọ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> binary_to_list (< < 255,0,0,0,0,1 >>).
[255,0,0,0,0,1]
Ví dụ:
Bạn có thể chọn bạn đóng gói bao nhiêu dữ liệu/trận bằng :Size
và -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.
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