我在阅读有关大端/小端的文章时感到困惑。
代码如下:
#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;
}
问题:
在第一行中,我能使用
static_cast<char*>(&i)
进行转换吗?在第二行中,根据代码,如果是小端模式,则
78
存储在最低字节中,否则12
存储在最低字节中。但是我认为,i = 12345678;
将以二进制形式存储在内存中。如果是小端模式,则
i
的二进制的最后一个字节将存储在最低字节中,但我不明白如何保证i
的最后一个字节是78
?就像,如果
i = 123;
,那么i
的二进制是01111011
,它能保证在小端模式下,23
存储在最低字节中吗?
int i = 0x12345678;
- Martin York