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