[英]c, hex representation in big-endian system
結果是什么:
int x = 0x00000001;
int y = 0x80000000;
在大端系統中?
我的目標是定義一個設置了第一個(內存中)位的int,而不管它是最高有效位還是最低有效位。 我知道對於小端系統,x可以滿足此要求,但是在大端系統中,它仍然適用嗎?
我很確定在以下兩個系統中都可以使用:
char c[4] = {0x80, 0, 0, 0};
int x = (int) c;
那是對的嗎? 有沒有更優雅的方法?
(我沒有可以進行試驗的大端系統)
您可能想要的是:
int x = 0;
char* p = (char*)&x;
p[0] = 0x01;
上面的代碼會將int
變量的最低地址字節中的最低有效位設置為1:
x == 0x10000000
)。 x == 0x00000001
)。 話雖如此,您對“第一位”的定義是什么? 恕我直言,它只是最低有效位,在這種情況下,無論處理器的字節序如何, int x = 0x00000001
都是答案!
以下術語可能有助於您更好地理解:
你可以嘗試工會
union foo
{
char array[8];
int64_t num;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.