in reply to unpacking 6-bit values

How would you do this efficiently in C anyway?

Ask the people who write FAT 12 drivers in C. (FAT 12 has two 12-bit values packed in three bytes.)