Depending on your situation, you may find bit-field more handy in your case:
//<9 bit empty><10 bit as a number 0-1023><10 bit as a number 0-1023><....>
//I need 16 Byte in complete... just told you the first 29 BIT.
struct MyData
{
unsigned dummy:9;
unsigned number1:10;
unsigned number2:10;
//....
};
Then you can modify each field as you do a normal variable, and load/store the whole 16 bytes together.