Tôi cần trích xuất các bit nhất định của một byte và bí mật các bit trích xuất trở lại giá trị hex.Perl: Làm thế nào để trích xuất các bit nhất định từ một byte và sau đó bí mật các bit này thành giá trị hex?
Ví dụ (giá trị của byte là 0xD2):
bit position
11010010 is 0xD2
- Bit 0-3 xác định kênh đó là
0010b
là0x2
- Bit 4-5 xác định bộ điều khiển là
01b
là0x1
- Bit 6-7 xác định cổng đó là
11b
là0x3
tôi bằng cách nào đó cần phải nhận được từ các byte là 0xD2
kênh là 0x2
, bộ điều khiển là 0x1
, cổng là 0x3
Tôi googled phân phối và tìm thấy các chức năng pack
/unpack
, vec
và sprintf
. Nhưng tôi đang gãi đầu bằng cách sử dụng các chức năng để đạt được điều này. Bất kỳ ý tưởng làm thế nào để đạt được điều này trong Perl?
Vâng, định dạng ban đầu là giá trị hex từ byte như vậy trong ví dụ trên 0xD2 không phải những gì tôi nêu trước đó. –
Tôi rất vui vì tôi có thể giúp cải thiện câu trả lời này. :) – memowe
Sau khi đọc: http://www.devshed.com/c/a/Perl/More-Perl-Bits/ Đồng xu giảm xuống :-) –