in reply to using a hexadecimal mask to create a list of values (that the mask is pointing to)

Step by step:

my $input = 'a6.55.45.0e';; my( $hex = $input ) =~ tr[.][]d;; ## Remove dots;; my $revHex = reverse $hex;; my $packedInt = pack 'h*', $revHex;; my @tuners;; vec( $packedInt, $_, 1 ) and push @tuners, $_ for 0 .. 31;; print "@tuners";; 1 2 3 8 10 14 16 18 20 22 25 26 29 31

Or as a compact sub:

sub mask2list { ( my $hex = shift ) =~ tr[.][]d; my $packed = pack 'h*', scalar reverse $hex; map{ vec( $packed, $_, 1 )? $_ : () } 0 .. 31; } my @tuners = mask2list( 'a6.55.45.0e' ); print "@tuners"; 1 2 3 8 10 14 16 18 20 22 25 26 29 31

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."
  • Comment on Re: using a hexadecimal mask to create a list of values (that the mask is pointing to)
  • Select or Download Code