2014-06-25 76 views
1
unsigned char endian[2] = {1, 0}; 
short x; 

x = *(short *) endian; 

我不明白x中的值。如果我有一個小端系統,x是1強制字節順序

但是,如果我有一個大端系統,x是256

爲什麼值256,而不是128?

感謝您的幫助。

+2

1位於16位大端值的*最重要*八位字節的零位。問問你自己2^8是什麼? – WhozCraig

回答

4

因爲big-endian中的字節01 00是值0x0100,它等於1 << 8 == 2**8 == 256(回想一下字節中有8位)。

+4

此解決方案的其他約束:'CHAR_BITS == 8'和'sizeof(short)== 2' – Deduplicator