[Pdx-pm] bit conversion brain-teaser

Joshua Hoblitt jhoblitt at ifa.hawaii.edu
Mon Mar 3 21:16:11 CST 2003

I have a 7-bit digital I/O module that outputs the state of it's channels via an ascii hex value.

For example:

normal state		: 7F
channel 0 to V-		: 7E
channel 6 to V-		: 3F

What I need to get out of this is the state of each channel.  I thought it would be pretty simple to do a hex -> per bit conversion but I ended up resorting to to heavy weapons.  This is my solution:

use Bit::Vector;

my $vector = Bit::Vector->new_Hex( '7', "7F" );

for ( 0 .. 6 ) {
        print $vector->contains( $_ ), "\n";

This probably shows that I'm ignorant of bit fiddling in general but it seems to me there should be a simple way to do this with unpack?  Or a way to treat a binary int like a stack and pop each bit off?

Anyways I thought some of you might find this a fun problem to solve.




More information about the Pdx-pm-list mailing list