@GhostWolf said in 2's complement convertion:

uint32_t test2 = (unit.value(1)<<16) | unit.value(0);

Just store the result as a signed integer (int32_t) instead of unsigned (uint32_t).

You don't need to change the bit pattern (0b11111111_11111111_11111111_11111111).

Interpreting this pattern as Unsigned gives you ‭4294967295 Interpreting this pattern as Signed gives you -1.