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


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

Assuming the following bit layout:
0055 5555 4444 4433 3333 2222 2211 1111
One way:
# Get individual num: $num = ($aggregate >> ($i*6)) & 0b111111; # Set individual num: $aggregate = ($aggregate & ~(0x3F << ($i*6))) | ($num << ($i*6));

Update: Added missing ~.
Update: Thelonius's newer post shows how to use this method to get/set all the nums at once.