Извлечение и объединение битов из разных байтов c c ++

Я объявил массив байтов:

uint8_t memory[123];

который я заполнил:

memory[0]=0xFF;
memory[1]=0x00;
memory[2]=0xFF;
memory[3]=0x00;
memory[4]=0xFF;

И теперь я получаю запросы от пользователя на конкретные биты. Например, я получаю запрос на отправку битов в позиции 10:35, и я должен вернуть эти биты, объединенные в байтах. В этом случае мне нужно 4 байта, которые содержат.

response[0]=0b11000000;
responde[1]=0b00111111;
response[2]=0b11000000; 
response[3]=0b00000011; //padded with zeros for excess bits

Это будет использоваться для Modbus, который является протоколом с прямым порядком байтов. Я придумал следующий код:

for(int j=findByteINIT;j<(findByteFINAL);j++){

   aux[0]=(unsigned char) (memory[j]>>(startingbit-(8*findByteINIT)));
   aux[1]=(unsigned char) (memory[j+1]<<(startingbit-(8*findByteINIT)));

   response[h]=(unsigned char) (aux[0] | aux[1] );
   h++;

   aux[0]=0x00;//clean aux
   aux[1]=0x00;

        }

который не работает, но должен быть близок к идеальному решению. Какие-либо предложения?

Ответы на вопрос(1)

Ваш ответ на вопрос