我在閱讀關於Big/Little Endian的文章時感到困惑。整數如何存儲在內存中?
代碼低於:
#include <iostream>
using namespace std;
int i = 12345678;
int main()
{
char *p = (char*)&i; //line-1
if(*p == 78) //line-2
cout << "little endian" << endl;
if(*p == 12)
cout << "big endian" << endl;
}
問:
在線路1,我所能做的使用
static_cast<char*>(&i)
轉換?在第2行中,根據代碼,如果是little-endian,則
78
存儲在最低字節中,否則12
存儲在最低字節中。但我認爲,i = 12345678;
將以二進制形式存儲在內存中。如果是小端,那麼
i
的二進制的最後一個字節將存儲在最低字節中,但我不明白的是它如何保證i
的最後一個字節是78
?就像,如果
i = 123;
,然後i
的二進制是01111011
,它可以保證在小端,23
存儲在最低字節?
您的代碼將失敗,因爲你混淆了十進制和十六進制。用'0x'前綴你的號碼,它會起作用。 –
您可能意思是:'int i = 0x12345678;' –