1
unsigned char endian[2] = {1, 0};
short x;
x = *(short *) endian;
我不明白x中的值。如果我有一个小端系统,x是1强制字节顺序
但是,如果我有一个大端系统,x是256
为什么值256,而不是128?
感谢您的帮助。
unsigned char endian[2] = {1, 0};
short x;
x = *(short *) endian;
我不明白x中的值。如果我有一个小端系统,x是1强制字节顺序
但是,如果我有一个大端系统,x是256
为什么值256,而不是128?
感谢您的帮助。
因为big-endian中的字节01 00
是值0x0100
,它等于1 << 8 == 2**8 == 256
(回想一下字节中有8位)。
此解决方案的其他约束:'CHAR_BITS == 8'和'sizeof(short)== 2' – Deduplicator
1位于16位大端值的*最重要*八位字节的零位。问问你自己2^8是什么? – WhozCraig