Hi Dave!
Thanks for your explanation.
I have managed to find a solution for this data structure.
Code:
head             = 4 bits
data_base[32-30] = 3 bits
pause_bit        = 1 bit
data_base[29-15] = 15 bits
pause_bit        = 1 bit
data_base[14-0]  = 15 bits
pause_bit        = 1 bit
Here it is:
Code:
   return (addr[0] & 0x06) << 29 | 
          (addr[1] & 0xFF) << 22 | 
          (addr[2] & 0xFE) << 14 | 
          (addr[3] & 0xFF) << 7  | 
          (addr[4] & 0xFE) >> 1;
Pretty interesting way of thinking. I have learnt a lot from this problem.
Thank you Dave. Thank you Salem!
Mas