http://www.perlmonks.org?node_id=605330


in reply to Re: 5x6-bit values into/out of a 32-bit word
in thread 5x6-bit values into/out of a 32-bit word

Okay, the C programmer in me rebelled against the inefficiency of my earlier reply. How about:
sub b5ToInt { use integer; return ($_[4]||0) + (($_[3]||0)<<6) + (($_[2]||0)<<12) + (($_[1]||0)<<18) + (($_[0]||0)<<24); } sub intToB5 { use integer; my $in = int(shift); return map { $_ & 0b111111 } (($in >> 24), ($in >> 18), ($in >> 12), ($in >> 6), $in); }