>>44
C言語でやってる限りはエンディアンと型のバイト数を
意識せにゃならんのはしょうがないんじゃね?
C++はよー分からんが。

まぁ、とりあえずエンディアン気にしないならこうか?

unsigned long val = 0xFFC8D6;
unsigned long a,b,c,d;

a = val / 0x1000000;
val = val % 0x1000000;
b = val / 0x10000;
val = val % 0x10000;
c = val / 0x100;
val = val % 0x100;
d = val;
printf("%02x %02x %02x %02x\n", a, b, c, d);

本質的には、やってることはビット演算と変わらんな。
バイト数は、まぁsizeofか何か使ってループ回すのかね。