标签: c byte endianness
unsigned char endian[2] = {1, 0}; short x; x = *(short *) endian;
我不理解x中的值。如果我有一个小端系统,x是1。
但如果我有一个大端系统,x就是256。
为什么值256而不是128?
感谢您的帮助。
答案 0 :(得分:4)
因为big-endian中的字节01 00是值0x0100,等于1 << 8 == 2**8 == 256(回想一个字节中有8位)。
01 00
0x0100
1 << 8 == 2**8 == 256