I have an array of unsigned chars that hold hex values, I’m interested in values  and  of the array.
Say  = 0x5b = 0101 1011
and  = 0x7b = 0111 1011
I'm trying to get all of  and the first half of , so 1011011 1111. So far I’ve come up with this;
short int holder = 0;
memcpy(holder,&char_array, 2 );
short int alt = holder >> 4;
I've tried creating a 14 bit data type to hold the bits, copying the 2 bytes in then shifting right 4 but this does not work. I appreciate this is probably not the right way to do this so any help would be greatly appreciated.
You say that you want all of  and the first half of  but your example does not show that. If you have 0101 1011 and 0111 1011 and you want the first with the 4 least significant bytes of the second you would get 0101 1011 1011. Or, if you want the most significant bytes of the second you get 0101 1011 0111. Neither of those is what you show.
You can use the following as a way to experiment with what you want: