>perl -wMstrict -le "my $str = qq{ 01 02 03 \n 04 00 E0 0a 00 00 00 00 00 00 00 00 00 \n}; (my $bits = $str) =~ s{[^[:xdigit:]]}{}xmsg; $bits = unpack 'B*', pack 'H*', $bits; my @ones_offsets; push @ones_offsets, $-[1] while $bits =~ m{(1)}xmsg; print qq{'$str'}; print qq{'$bits'}; print qq{no one bits found} unless @ones_offsets; print qq{1 bit at offset $_} for @ones_offsets; " ' 01 02 03 04 00 E0 0a 00 00 00 00 00 00 00 00 00 ' '00000001000000100000001100000100000000001110000000001010000000000000000000000000000000000000000000000000000000000000000000000000' 1 bit at offset 7 1 bit at offset 14 1 bit at offset 22 1 bit at offset 23 1 bit at offset 29 1 bit at offset 40 1 bit at offset 41 1 bit at offset 42 1 bit at offset 52 1 bit at offset 54