How to split a binary data to form two split binary data?
You can use the bit shift and and operator, like:

uint32_t data = 0xFFFF0001;


The following line will shift all bits 15 places to the right, meaning the least significant 15 bits will be removed, and the other bits shifted to the right.

uint32_t dataLeft = data &gt;&gt; 15;

11111111111111110000000000000001
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;11111111111111110000000000000001
| Bit shift   || orig. bits    ||Removed bits |


For the other 15 bits,  you can use the and operator, which just makes all 1's 0's for those bits not in the bit mask (0x7FFF).

uint16_t dataRight = data &amp; 0x7FFF;

value:              11111111111111110000000000000001
bit mask (0x7FFF):  00000000000000000111111111111111
                    -------------------------------- &amp; / AND
                    00000000000000000000000000000001