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