$c = $offset - ( ($offset - ($offset % 4))/4 + ($offset % 4 ? 1 : 0) ); # first frame $i = ( (vec( $bitstr, $c, 4 ) + # low nybble (vec( $bitstr, $c + 1, 4 )<<4)) # high nybble >> 4 - ($offset % 4) - 4 * ( ($offset % 4) ? 0 : 1 ) # shift off extra bits );