質問です。

int x[2];
x[0] = 0x00010203;
x[1] = 0x04050607;
char* p = reinterpret_cast<char*>(x);
for(int i = 0; i < 8; i++){
cout << (int)(*p) << endl;
p++;
}
の結果が
3 2 1 0 7 6 5 4となるのはなぜですか?教えてください