初期フォーマットは?
my $chr = chr(0b11010010); # A character e.g. from read()
my $bin = '11010010'; # Binary
my $hex = 'D2'; # Hexadecimal
my $num = 0b11010010; # A number.
my $num = 0xD2; # A number.
あなたはそれを数値に変換することから始めたい
my $num = ord($chr);
my $num = unpack('C', $chr); # Alternative
my $num = oct("0b$bin");
my $num = hex($hex);
次に、シフトとマスクを使用します。
my $channel = ($num >> 0) & 0xF; # Or just: $num & 0xF
my $controller = ($num >> 4) & 0x3;
my $port = ($num >> 6) & 0x3; # Or just: $num >> 6
(マスクには0b1111
,0b11
と0b11
を使用できます。ほとんどの人は 16 進数で作業します。)
またはvec
、あなたのためにマスクを考えさせてください。
my $channel = vec $num, 0, 4;
my $controller = vec $num, 4, 2;
my $port = vec $num, 6, 2;
の例を次に示し$controller
ます。
11010010
>> 4
--------
11010010
& 11
--------
01
(わかりやすくするために一部のゼロを省略しています。)