强制执行字节顺序

时间:2014-06-25 01:19:00

标签: c byte endianness

unsigned char endian[2] = {1, 0};
short x;

x = *(short *) endian;

我不理解x中的值。如果我有一个小端系统,x是1。

但如果我有一个大端系统,x就是256。

为什么值256而不是128?

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

因为big-endian中的字节01 00是值0x0100,等于1 << 8 == 2**8 == 256(回想一个字节中有8位)。