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


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

How about these:
#!perl -w use strict; my $fmt = "0b" . ("%06b" x 5); sub b5ToInt { oct sprintf "0b%06b%06b%06b%06b%06b", @_ } sub intToB5 { map { oct "0b$_" } unpack "(a6)5", sprintf "%030b", $_[0] } my $word = b5ToInt(1,2,3,4,5); printf "word = %d = 0x%08x = 0b%030b\n", $word, $word, $word; my @out = intToB5($word); print "out = ", join(", ", @out), "\n";
Output:
word = 17314053 = 0x01083105 = 0b000001000010000011000100000101 out = 1, 2, 3, 4, 5