Uint32 u32;
BYTE u8;
u8 = (BYTE )u32;

とするコードがあったとする。u32 を、ポインタで置き換えたいとき、

Uint32 *pUint32;
u8 = (BYTE )*pUint32;
と書くのも正解だが、

u8 = *(BYTE *)pUint32;
と書くのも正解で、実は、後者の方が効率は良い場合があるとされる。
なぜなら、メモリから前者は4バイト読んでから上位バイトを捨てるが、
後者では最初から上位バイトを読まないから。

この場合、Little Endian だと、後者の書き方でも混乱が少ないが、Big Endian
だと何を意味しているのか分かりにくくなる。というのは、
(BYTE *)のようなポインタ型への cast は、旧来の C では、アドレス値自体は
変更せずに、型だけを変更するというのが伝統的な実装だったため
(ただし、C++ の場合、多重継承していた場合は、その原則を破ってアドレス値が
変化する事があるが。)。

BigEndian の場合、最後の書き方の実装に不安定要素が残るように思える。