a が 16bit整数だとして
union や キャストを使わずにやろうとすると、
バイトオーダーの入れ替えを作るのにビットシフトするのかな
((a << 8) & 0xf0) | ((a >> 8) & 0x0f)