Hi Charles,
This is my third attempt to respond to this. I know how to do it, just can't seem to make it make sense on paper. Mind you this is just 1 way, if I can figure out how to say the others i will.

Code:
'assuming:
'byte 4 is 0-7
'byte 3 is 8-15
'byte 2 is 16-23
'byte 1 is 24-31
'byte 0 is 32-39

BigShift:
'    first part 31-36 left 4 places
  byte0 = byte0 <<4
  byte0.3 = byte1.7
'    second part 23-30 left 3 places
  byte0.1 = byte1.6
  byte0.0= byte1.5
  byte1 = byte1<<3
  byte1.2 = byte2.7
'    third part 15-22 left 2 places
  byte1.0=byte2.6
  byte2 = byte2<<2
  byte2.1 = byte3.7
'    last part 7-14 left 1 place
  byte3<<1
  byte3.0=byte4.7

'''''''''done
Not very elegent, but if i kept my bits in order, I think it works. The shifted bits will leave 0 in their place, the assignments will leave original intact