in reply to Decoding Mapped Bitfields
I think vec is all you need for this. The $actions reference string can be treated as a vector of eight byte-sized chunks, and the $item character as a vector of eight bits. That will let each share an index for the correspondence you want (though it's necessary to be tricky to get the bit order you wanted).
It may have been the need for the chr functions that was troubling you. Your $item was actually an integer.our $actions = " ABCDEFG"; my $item = chr(0x37); my $newitem = join '', map { vec($item, 7-$_, 1) ? chr(vec $actions, $_, 8) : ' '; } 0 .. 7; print $newitem,$/; __END__ BC EFG
Occasionally we hear from C programmers learning Perl that they really must have strings as an array of characters. Vec is the answer to that plea (as is substr). It's just awkward enough to move them to find a perlier way ;-)
After Compline,
Zaxo
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Decoding Mapped Bitfields
by sauoq (Abbot) on Oct 09, 2005 at 12:37 UTC |