Ваш код не зависит от порядкового номера. При взгляде на биты переменных с использованием масок они всегда будут выглядеть как big-endian. Байты старшего разряда будут находиться слева от байтов младшего разряда. Хотя на машинах с прямым порядком байтов они меняются местами, мы не мудрее.
Однако, с учетом сказанного, вы можете вместо этого просто скопировать байты, фактически не глядя на них. Без масок, без смен, просто скопируйте байты:
// extract the bytes
uint8_t bytes[sizeof(x)];
memcpy(bytes, &x, sizeof(x));
// reassemble
uint16_t y;
memcpy(&y, bytes, sizeof(y));