2014-06-25 62 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